我的使用情况是一个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