繁体   English   中英

Java-Gui组件不显示

[英]Java - Gui Components do not show up

我有这段代码可以手动创建一个简单的GUI,并且试图在框架上显示GUI组件。 但是,当我运行程序时,仅显示框架而不显示组件,例如JTable。

知道为什么吗?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;

public class GUI extends JFrame {
    public void buildGui() {
        JFrame frame = new JFrame("Hotel TV Scheduler");    
        frame.setVisible(true);

        Container contentPane = frame.getContentPane();

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());

        JPanel listPanel = new JPanel();
        listPanel.setLayout(new FlowLayout());

        JTable chOneTable = new JTable();
        JTable chTwoTable = new JTable();
        JTable listTable = new JTable();

        listPanel.add(chOneTable);
        listPanel.add(chTwoTable);
        listPanel.add(listTable);

        contentPane.add(listPanel);
    }
}

您应该在JTables上设置preferredSize() ,然后再执行pack()

编辑:

setVisible(true)移动到pack() 这是Sun / Oracle使用顺序

public class GUI extends JFrame {
    public void buildGui() {
        JFrame frame = new JFrame("Hotel TV Scheduler");

        Container contentPane = frame.getContentPane();

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());

        JPanel listPanel = new JPanel();
        listPanel.setLayout(new FlowLayout());

        Dimension d = new Dimension(100, 100);

        JTable chOneTable = new JTable();
        chOneTable.setPreferredSize(d);

        JTable chTwoTable = new JTable();
        chTwoTable.setPreferredSize(d);

        JTable listTable = new JTable();
        listTable.setPreferredSize(d);

        listPanel.add(chOneTable);
        listPanel.add(chTwoTable);
        listPanel.add(listTable);

        contentPane.add(listPanel);

        frame.pack();
        frame.setVisible(true);
    }
}
  1. 构造JFrame实例
  2. 将组件添加到JFrame实例
  3. 实现JFrame实例(即setVisible(true)

显示JFrame实例时,没有任何组件显示的原因是因为在实现JFrame实例后向其中添加了组件。 如果要显示组件,请按照上述步骤操作,或者在buildGui方法的末尾重新验证/重新绘制容器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM