簡體   English   中英

JTextArea 不顯示

[英]JTextArea doesn't show up

public class Server extends JFrame{
    private JLabel ipLabel;
    private JTextField ipTextField;
    private JLabel portLabel;
    private JTextField portTextField;

    private JTextArea messagesTextArea;

    public Server(String title){
        super(title);

        setLayout(new GridBagLayout());
        Container container = getContentPane();
        GridBagConstraints gc = new GridBagConstraints();

        ipLabel = new JLabel("IP Address: ");
        gc.gridx = 0;
        gc.gridy = 0;
        container.add(ipLabel, gc);

        ipTextField = new JTextField();
        ipTextField.setColumns(15);
        gc.gridx = 1;
        gc.gridy = 0;
        container.add(ipTextField, gc);

        portLabel = new JLabel("Port: ");
        gc.gridx = 2;
        gc.gridy = 0;
        container.add(portLabel, gc);

        portTextField = new JTextField();
        portTextField.setColumns(4);
        gc.gridx = 3;
        gc.gridy = 0;
        container.add(portTextField, gc);

            // I think this is the problem
        messagesTextArea = new JTextArea();
        gc.gridx = 0;
        gc.gridy = 1;
        container.add(messagesTextArea, gc);
    }
}

JTextArea 不顯示。 我正在使用 GridBagLayout。 這是我的代碼。 有什么問題?

這是我的主要方法。

public class MainFrame {

    private static Server server;

    public static void main(String[] args) {    
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {

                server = new Server("Server");
                server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                server.setBounds(dimension.width/4, dimension.height/4, dimension.width/2, dimension.height/2);
                server.setVisible(true);
            }
        });
    }
}

始終將JTextArea添加到JScrollPane否則當文本區域中的行數大於框架的高度時會產生問題。

    JScrollPane jScrollPane=new JScrollPane(messagesTextArea);
    container.add(jScrollPane, gc);

並嘗試

    gc.fill=GridBagConstraints.BOTH;
    gc.weighty=0.9;
    gc.weightx=0.8;

使用weightyweightx以組件的百分比設置大小。

使用fill水平或垂直或同時填充所有可用空間。

有關更多信息,請查看如何使用 GridBagLayout

不是調用空構造函數,而是使用JTextArea(int, int)來設置行和列的大小,如下所示:

// JTextArea with 1 row and 50 columns
messagesTextArea = new JTextArea(1,50);

沒有參數的構造函數創建了一個具有 0 行和 0 列的 JTextArea,因此您什么也看不到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM