我有一個JPanel
,它顯示一組JLabels
,它們都是在方法內部飛行計算和打印的。標籤的內容在一個ArrayList
通過ActionListener更新JPanel內容
保持在另一種方法更目的是通過一個動作偵聽器添加到ArrayList
這樣:
class listener implements ActionListener{
public void actionPerformed(ActionEvent a){
String name = myTextArea.getText();
Object temp = new Object(name);
myList.add(temp);
panel = createPanel();
panel.revalidate();
panel.repaint();
card.show(contentsPanel, "panel");
}
}
createPanel()
是什麼取ArrayList
並使得它的一個顯示。
這當然有點抽象,但是這個想法依然存在。 當我嘗試更新.revalidate()
和.repaint()
面板的內容和外觀時,問題就出現了。我知道這些對象位於ArrayList中,因爲我已經測試過它,但面板不會正確重繪本身。
有什麼建議嗎?如有需要,我可以提供更多信息或代碼。
按照要求我會包括代碼。我不能將整個事情,由於大小,但這裏是它引用的方法:
private JPanel createPanel() {
panel = new JPanel();
panel.setLayout(new GridLayout(myList.size(), 1));
panel.setBackground(new Color(250, 250, 250));
for(int i = 0; i < myList.size(); i++){
JLabel temp = new JLabel(myList.get(i).toString());
panel.add(temp);
}
return panel;
}
PLZ提供的附加信息的代碼..也許,一個正在運行的副本,我可以複製粘貼並運行並看到.. – bragboy
您不是將面板添加到您顯示的代碼段中的父組件。 –
您正在創建一個新面板,而不是替換舊面板。你不應該重新創建它。 – gigadot