NefaultListModel 객체가 추가 한 JList 요소에 리스너 이벤트를 추가하는 방법은 무엇입니까?
-
21-12-2019 - |
문제
2 명의 JLists의 AddGrouplist '와'AddApkList '를 만들었습니다.Model.addelement (ArrayList1.get (ArrayList1.size () - 1))를 사용하여 addGroupList에 요소를 추가하고 있습니다.addGroupList의 선택된 값을 기반으로 addApkList를 업데이트하고 싶습니다.이를 위해 목록 항목이 선택되어 있지만 이벤트가 트리거링되지 않으면 이벤트 리스너를 추가 할 수 있습니다. 이것을 성취하기 위해 무엇을해야합니까? 다음 코드가 사용하는 코드입니다.
model1 = new DefaultListModel();
model2 = new DefaultListModel();
addApkList = new JList(model1);
addGroupList = new JList(model2);
scrollPane1 = new JScrollPane();
scrollPane1.setViewportView(addApkList);
scrollPane2 = new JScrollPane();
scrollPane2.setViewportView(addGroupList);
.
이 방법으로 JList를 정의했습니다. 다음과 같은 방법으로 AddGroupList
에 요소를 추가했습니다.model1.addElement(arrayList1.get(arrayList1.size()-1));
.
과 다음과 같은 방법으로 리스너를 추가했습니다.
addGroupList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent lse) {
if (!lse.getValueIsAdjusting()) {
System.out.println("Selection trigerred");
}
}
});
.
이 코드의 변경 사항은 발생하지 않습니다.내가 뭘 잘못하고 있니? 또한 다음을 시도했습니다
model1.addListDataListener(new ListDataListener() {
@Override
public void intervalAdded(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void intervalRemoved(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void contentsChanged(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
. 해결책
다음과 같은 방법으로 AddGroupList
에 요소를 추가했습니다..model1.addElement(arrayList1.get(arrayList1.size()-1));
아니, 그렇지 않았습니다.model1
는 addApkList
가 아닌 addGroupList
의 목록 모델입니다.
addApkList = new JList(model1);
.
그것은 model2.addElement(arrayList1.get(arrayList1.size()-1))
이어야합니다.
어떤 경우에도 ListSelectionEvent 목록 모델에 항목을 추가 할 때 발생합니다.그것은 일어나지 않을 것입니다.추가 된 항목을 선택한 항목으로 설정해야합니다.
Object item = arrayList1.get(arrayList1.size()-1);
model2.addElement(item);
addGroupList.setSelectedValue(item, true);
.
jlist.setselectedValue (object anobject, boolean saysscroll) 자세한 내용은
다른 팁
2 명의 JLists의 AddGrouplist '와'AddApkList '를 만들었습니다.나는 추가하고있다 addGrouplist를 사용하는 요소 model.addelement (ArrayList1.get (ArrayList1.size () - 1));나는 그 것이다, I. AddGroupList의 선택된 값을 기반으로 AddApkList를 업데이트하고 싶습니다.에 대한 이것은 내가 행동 할 수 있도록 이벤트 리스너를 추가하려고합니다. 목록 항목이 선택되어 있지만 이벤트가 트리거링되지 않는 것입니다. 이것을 성취하기 위해 무엇을해야합니까?다음 코드가 사용하는 코드입니다.
예 :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Testing extends JFrame {
private static final long serialVersionUID = 1L;
private DefaultListModel listModel = new DefaultListModel();
private DefaultListModel listModelEmpty = new DefaultListModel();
private JList list = new JList(listModel);
private JList listEmpty = new JList(listModelEmpty);
private JPanel panel = new JPanel(new GridLayout(1, 1));
private int currentSelectedRow = 0;
private int xX = 0;
public Testing() {
setLocation(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
for (int x = 0; x < 9; x++) {
listModel.addElement("" + x);
xX++;
}
JScrollPane sp = new JScrollPane(list);
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent lse) {
if (!lse.getValueIsAdjusting()) {
System.out.println("Selection trigerred");
}
}
});
JScrollPane spEmpty = new JScrollPane(listEmpty);
panel.add(spEmpty);
panel.add(sp);
add(panel, BorderLayout.CENTER);
JButton btn1 = new JButton("Reset Model CastingModel");
add(btn1, BorderLayout.NORTH);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
//list.clearSelection();
DefaultListModel model = (DefaultListModel) list.getModel();
model.removeAllElements();
for (int x = 0; x < 9; x++) {
model.addElement("" + (x + xX));
xX++;
}
list.setModel(model);
}
});
JButton btn2 = new JButton("Reset Model directly from Model");
add(btn2, BorderLayout.SOUTH);
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
//list.clearSelection();
listModel.removeAllElements();
for (int x = 0; x < 9; x++) {
listModel.addElement("" + (x + xX));
xX++;
}
}
});
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Testing().setVisible(true);
}
});
}
}
.