我的使用情況是一個List<String>
傳遞給Jpanel
,並在每個List
String
,則JPanel
呈現UI組件。這個UI組件由3個按鈕組成,我現有的代碼用於我的給定用例如下。 -
爲「UI組件」中的代碼如下 -的Java Swing - JPanel並的PropertyChangeListener
public class MacroEditorEntity implements ActionListener {
private String macro;
private JButton upButton;
private JButton downButton;
private JButton MacroDetailsButton;
public MacroEditorEntity(String macro) {
this.macro = macro;
upButton = new JButton("Up");
downButton = new JButton("Down");
MacroDetailsButton = new JButton(macro);
upButton.addActionListener(this);
downButton.addActionListener(this);
MacroDetailsButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent evt) {
if(evt.getSource().equals(MacroDetailsButton))
{
System.out.println(macro);
}
}
public JButton GetUpButton()
{
return upButton;
}
public JButton GetDownButton()
{
return downButton;
}
public JButton getMacroDetailsButton()
{
return MacroDetailsButton;
}
}
我的面板代碼如下 -
public class MacroEditor extends JPanel implements PropertyChangeListener {
private static final long serialVersionUID = 1L;
private List<String> stringlist;
public MacroEditor(List<String> list) {
this.stringlist = list;
setupComponents();
validate();
setVisible(true);
}
public void setupComponents()
{
Box allButtons = Box.createVerticalBox();
for(String string : stringlist)
{
MacroEditorEntity entry = new MacroEditorEntity(string);
Box entryBox = Box.createHorizontalBox();
entryBox.add(entry.GetUpButton());
entryBox.add(Box.createHorizontalStrut(15));
entryBox.add(entry.getMacroDetailsButton());
entryBox.add(Box.createHorizontalStrut(15));
entryBox.add(entry.GetDownButton());
allButtons.add(entryBox);
}
add(allButtons);
}
@Override
public void propertyChange(PropertyChangeEvent arg0) {
revalidate();
repaint();
}
}
的代碼工作正常,在通過List
所有Strings
。我希望我的面板獲取List
可能發生的任何更改,如添加或刪除,並相應地添加/刪除相關的相應UI組件。我認爲這可以通過使用PropertyChangeListener來完成,但無法解釋我的代碼。
任何想法或建議,我可以使我的面板渲染/重新渲染的東西,只要有改變List
會有所幫助。
請學習java命名約定並堅持使用它們 – kleopatra 2012-03-18 15:19:16