0
여기 새내기. 나는 DefaultListModel의 요소를 추가 할 때 DefaultListModel에 클래스를 추가 할 때 toString 또는 전체 클래스의 값을 저장 했습니까?
는, 나는 오버라이드 (override) toString로 클래스를 사용. 아래 예제 코드를 기반으로 btnid 단추를 클릭하면 선택한 항목의 ID를 표시하려고합니다. DisplayID 표시 아래명령은 작동하지 않습니다. 도와주세요. 감사!
class SomeClass {
JFrame f = new JFrame("Sample");
JScrollPane sp = new JScrollPane();
DefaultListModel dlm = new DefaultListModel();
JList lst = new JList(dlm);
public SomeClass() {
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btnadd = new JButton("Add");
JButton btnid = new JButton("View ID");
Container p = f.getContentPane();
sp.getViewport().add(lst,null);
p.add(sp, BorderLayout.WEST);
p.add(btnadd, BorderLayout.EAST);
p.add(btnid, BorderLayout.SOUTH);
btnadd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dlm.addElement(new ElementDisplay(dlm.getSize(),"Element " + dlm.getSize()));
}
});
btnid.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayID();
}
});
f.pack();
f.setVisible(true);
}
private void displayID() {
ElementDisplay ed;
ed = dlm.getElementAt(lst.getSelectedIndex());
System.out.println(ed.elementID);
}
public static void main(String args[]) {
SomeClass sc = new SomeClass();
}
class ElementDisplay {
public int elementID;
private String elementDescription;
public ElementDisplay(int pid, String pdesc) {
elementID=pid;
elementDescription=pdesc;
}
@Override
public String toString() {
return elementDescription;
}
}
}
감사합니다. 다른 JList 및 DefaultListModel을 작성하는 것이 실제로 필요한가? 그것은 내 솔루션과 유일한 차이점입니다. – user3315910
또 다른'JList' _or_'DefaultListModel'을 만들지 않습니다. 방금 참조를 얻고 있습니다. 새로운 객체는'new' 키워드로 _only_ 생성됩니다. 내가하는 일은 그것을하는 적절한 방법이다. 그렇게하면 클래스 멤버로서'JList' 나'DefualtListModel'을 사용할 필요가 없습니다. 생성자에서 선언 할 수 있습니다. 범위에 대해 걱정할 필요가 없습니다. 데이터 필드가 적을수록 좋습니다. –
'ElementDisplay ed'라는 참조를 얻는 것과 같은 방식으로,'JList'와'DefaultListModel'을 가지고했던 것과 같은 것입니다. –