[英]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.