我有一个小部件,用于编译关于每个" plate"的不同信息,每条信息都存储在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);
}
}
}
Widget构造函数(来自widget类):
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();
}
答案 0 :(得分:0)
您可以这样做:
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。