我試圖動態地將一些組件添加到JPanel,但不幸的是它們沒有出現。我只看到了在構造函數中添加的那些。動態添加組件到JPanel
更新版本(添加新JPanel,所有的組件會):
public class View extends JPanel {
JPanel panel = new JPanel();
JLabel label;
JLabel labels[];
JButton b1 = new JButton("OK");
public View() {
this.setLayout(new FlowLayout());
this.add(panel); // adding a new JPanel
label = new JLabel("My label");
panel.add(label); // adding label to the new panel (this one works)
}
public void showLabels() {
System.out.println("function showLabels called");
labels = new JLabel[5];
for (int i = 0; i < 5; i++) {
labels[i] = new JLabel("Label: " + i);
panel.add(labels[i]); // this one doesn't work
}
panel.add(b1); // this one doesn't work, too
this.validate(); // validating this class (parent container)
panel.validate(); // validating the panel, where all the components are
}
}
可惜的是沒有什麼改變。
你嘗試調用'包()'父'JFrame'? – Jack 2012-04-10 17:21:21
還沒有。僅僅調用revalidate()或其他的東西是不夠的? – user1170330 2012-04-10 17:22:26
JPanel的佈局是什麼?一些組件可以在一些佈局中重疊,如BorderLayou。嘗試BoxLayout或FlowLayout。 – elias 2012-04-10 17:50:33