繁体   English   中英

如何让我的JPanels / JFrame实际出现?

[英]How can I make my JPanels/JFrames actually show up?

我有一个小部件,用于编译关于每个“板”的不同信息,每条信息都存储在JLabel中。 我已将所有JLabel放入JPanel(每个板块一个JPanel),然后将JPanel放入JFrame,因为这似乎是互联网上的共识,以便让JPanel真正显示出来。 当我在另一个类中构造小部件时,我创建了一个小部件数组(每个小板一个小部件),因此目标是让这个小部件数组(实际上只是一个包含一个Jaabel的JFrame的JFrame)出现。 我不知道我哪里出错了,因为我正在使用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 BeltViewWidget(Belt belt, int position) {
    JPanel _widget_panel = new JPanel();
    JFrame _frame = new JFrame();
    _belt = belt;
    _position = position;
    Plate p = _belt.getPlateAtPosition(_position);
    _widget_panel.setVisible(true);
    _widget_panel.setLayout(new GridLayout());
    refresh();
}

你可以这样做:

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);

}

我不认为你设置_frame可见与true。

暂无
暂无

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

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