當用戶單擊JDialog上的按鈕時,我無法將JComponents添加到JDialog。基本上我希望它看起來像這樣:將組件動態添加到JDialog
然後,當用戶點擊「添加新字段」我希望它看起來像這樣:
我似乎無法到讓對話框添加新的JLabel或JTextField。任何人都可以將我指向正確的方向嗎?
編輯:這是「添加新字段」按鈕的操作(現在只需要嘗試標籤)。
@Action
public void addNewField()
{
Container contentPane = getContentPane();
JLabel label = new JLabel ("welkom");
contentPane.add(label, BorderLayout.CENTER);
}
SOLUTION:
我使用MRE的解決方案,並得到它的工作。這是我最後的功能:
@Action
public void addNewField()
{
System.out.println("New Field...");
Container contentPane = getContentPane();
JLabel label = new JLabel ("welcome");
label.setBounds(10,10,100,10); //some random value that I know is in my dialog
contentPane.add(label);
contentPane.validate();
contentPane.repaint();
this.pack();
}
我的問題另外一個是我正在使用NetBeans的「自由設計」的佈局,這意味着我的標籤可能是在一些奇怪的位置,而不是在邊界被我的對話(只是猜測)。我用label.setBounds()
解決了這個問題,這樣它就能準確顯示我想要的位置。
請參閱編輯1我的答案。 –
只有一個組件可以進入'BorderLayout.CENTER'(或者'BorderLayout.ANYTHING')。 –
順便說一句 - 出於可用性的目的,「添加新字段」按鈕應該可能在新字段出現的位置之上。這樣用戶可以通過點擊5次按鈕來添加5個新字段(而不必在點擊過程中移動鼠標)。 –