如何设置 JTextArea 的大小?

Tyl*_*r B 1 java swing jframe jtextarea

我对 Java 中的图形处理相当陌生,并且一直在尝试制作一个简单的控制台来在窗口中显示基于文本的游戏。我有一个测试类,我正在控制台上工作,但是当我将 JTextArea 添加到控制台窗口时,它要么占据整个窗口,要么根本不显示。

这是我的代码:

import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.Event;
public class GUI {
    public static void main(String[] args) {
        JFrame frame = new JFrame("AoA");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(1020,760);
        frame.setBackground(Color.LIGHT_GRAY);
        frame.setResizable(false);
        JTextArea jta = new JTextArea(100,100);
        jta.setEditable(false);
        jta.setBackground(Color.WHITE);
        frame.add(jta);

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我的一些导入未在此文件中使用,但它们将在最终游戏中使用。我还知道 JTextArea 的大小设置为 100,100,我不确定它是否太大或太小。不过,我确实需要一些帮助。

Ser*_*kyy 5

您的问题是默认安装BorderLayout在您的框架中。解决问题的最简单方法是设置另一个布局管理器。

public static void main(String[] args) {
    SwingUtilities.invokeLater(GUI::startUp); 
}

private static void startUp() {
    JFrame frame = new JFrame("AoA");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(1020,760);
    frame.setBackground(Color.LIGHT_GRAY);
    frame.setResizable(false);
    frame.setLayout(new FlowLayout()); // FlowLayout is required
    JTextArea jta = new JTextArea(40,40);
    jta.setEditable(false);
    jta.setBackground(Color.WHITE);
    // JScrollPane to get the scroll bars when required
    frame.add(new JScrollPane(jta));
    // setVisible should be last operation to get a correct painting
    frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

请查看Swing 中的布局管理器