¿Cómo agregar eventos de oyente a los elementos JLIST que se agregan por defecto Listmodel Objeto?
-
21-12-2019 - |
Pregunta
He creado 2 Jlists 'AddGrouplist' y 'AddApklist'.Estoy agregando elementos a AddGroupplist usando model.addelement (ArrayList1.Get (ArrayList1.Size () - 1));Lo que es, quiero actualizar AddApklist en función del valor seleccionado de AddGroupplist.Para esto, estoy tratando de agregar a los escuchadores de eventos para que pueda actuar sobre algo cuando se selecciona la lista de la lista, pero el evento no está trigerrando. ¿Qué hago para lograr esto? Siguiente es el código que estoy usando.
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);
De esta manera he definido JLIST. de la siguiente manera he agregado elementos a AddGroupplist
model1.addElement(arrayList1.get(arrayList1.size()-1));
y de siguiente manera he agregado oyente.
addGroupList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent lse) {
if (!lse.getValueIsAdjusting()) {
System.out.println("Selection trigerred");
}
}
});
No parece que ocurra ningún cambio con este código.¿Qué estoy haciendo mal? También he intentado seguir
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.
}
});
Solución
De siguiente modo, he agregado elementos a AddGroupplist
model1.addElement(arrayList1.get(arrayList1.size()-1));
no, no lo has hecho.model1
es el modelo de lista para addApkList
no addGroupList
:
addApkList = new JList(model1);
Debe ser model2.addElement(arrayList1.get(arrayList1.size()-1))
.
En cualquier caso, sospecho que está esperando para un listselectionEvent siendo despedido cuando simplemente agregue un elemento al modelo de lista.Eso no sucederá.Debe configurar el elemento agregado como el seleccionado:
Object item = arrayList1.get(arrayList1.size()-1);
model2.addElement(item);
addGroupList.setSelectedValue(item, true);
Eche un vistazo a jlist.setselectedValue (objeto ANOBJECT, BOOLEAN SHUTSCROLL) para más detalles.
Otros consejos
He creado 2 Jlists 'AddGrouplist' y 'AddApklist'.Estoy agregando Elementos para addgroupplist usando model.addelement (arraylist1.get (ArrayList1.Size () - 1));La cosa es, yo desea actualizar ADDAPKLIST en función del valor seleccionado de AddGroupplist.Para Esto, estoy tratando de agregar a un escuchador de eventos para que pueda actuar sobre Algo cuando se selecciona la lista de la lista, pero el evento no está trigerrando. ¿Qué hago para lograr esto?Siguiente es el código que estoy usando.
por ejemplo
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);
}
});
}
}