내 유스 케이스는 JPanel
는 UI 구성 요소를 렌더링하는 List<String>
는 Jpanel
및 상기 List
각 String
위해 전달된다는 것이다. 이 UI 구성 요소는 3 개의 버튼으로 구성되며 현재 사용중인 코드는 다음과 같습니다. -
'UI 구성 요소'에 대한 코드는 다음 -자바 스윙 - 인 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
이 변경되는 즉시 패널에서 렌더링/재 렌더링하는 방법에 대한 아이디어 나 제안이 도움이 될 것입니다.
자바 이름 지정 규칙을 배우고 – kleopatra