Java 如何使我的JPanels/JFrames真正显示出来?

Java 如何使我的JPanels/JFrames真正显示出来?,java,swing,jframe,jpanel,jlabel,Java,Swing,Jframe,Jpanel,Jlabel,我有一个小部件,用于编译关于每个“板”的不同信息,每个信息都存储在一个JLabel中。我把所有的jLabel放进一个JPanel(每个盘子一个JPanel),然后把JPanel放进一个JFrame,因为这似乎是互联网上的共识,是让JPanel真正出现的最佳方式。当我在另一个类中构造widget时,我创建了一个widget数组(每个板块一个widget),因此目标是让这个widget数组(实际上只是一个JFrame,其中包含一个JPanel,其中包含几个jlabel)出现。我不确定哪里出了问题,因

我有一个小部件,用于编译关于每个“板”的不同信息,每个信息都存储在一个JLabel中。我把所有的jLabel放进一个JPanel(每个盘子一个JPanel),然后把JPanel放进一个JFrame,因为这似乎是互联网上的共识,是让JPanel真正出现的最佳方式。当我在另一个类中构造widget时,我创建了一个widget数组(每个板块一个widget),因此目标是让这个widget数组(实际上只是一个JFrame,其中包含一个JPanel,其中包含几个jlabel)出现。我不确定哪里出了问题,因为我使用的是setVisible()和add(Component)方法。非常感谢您的任何意见

public class BeltView extends JPanel implements BeltObserver {

    private Belt belt;
    private BeltViewWidget[] _widgets;

    public BeltView(Belt b) {
        this.belt = b;
        belt.registerBeltObserver(this);
        setLayout(new GridLayout(belt.getSize(), 1));
        _widgets = new BeltViewWidget[belt.getSize()];
        for (int i = 0; i < belt.getSize(); i++) {
            if (belt != null && belt.getPlateAtPosition(i) != null) {
                BeltViewWidget widget = new BeltViewWidget(belt, i);
                _widgets[i] = widget;
            }
        }
        for (int j = 0; j < _widgets.length; j++) {
            if (_widgets[j] != null) {
                add(_widgets[j]);
                _widgets[j].setVisible(true);
            }
        }
    }

您可以这样做:

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setTitle("My First Swing Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Welcome");
frame.add(label);
frame.pack();
frame.setVisible(true);
}


我认为您没有将“U帧可见”设置为true。

您可以执行以下操作:

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setTitle("My First Swing Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Welcome");
frame.add(label);
frame.pack();
frame.setVisible(true);
}


我认为您没有将“U帧可见”设置为true。

1)要更快获得更好的帮助,请发布或。2)考虑在<>代码> jList或<代码> JTAB> /代码>中显示小部件,然后将其放入面板中。对于数据组来说,这通常是一种更好的方法。1)要更快地获得更好的帮助,请发布或。2)考虑在<>代码> jList或<代码> JTAB> /代码>中显示小部件,然后将其放入面板中。对于数据组来说,这通常是一种更好的方法。谢谢你们!我也会试试看。谢谢你们!我也会试试看。