Добавление ActionListener в JList
У меня есть JList с массивом строк. В основном это отображает меню ресторана. прямо рядом с JList у меня есть другой JList, который пуст. Всякий раз, когда пользователь дважды щелкает строку в первом JList (где отображается меню), я хочу, чтобы она отображалась в следующем JList, который находится рядом с ним.
Как я могу это сделать?
4 ответа
Ты можешь попробовать
final JList list = new JList(dataModel);
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
String selectedItem = (String) list.getSelectedValue();
// add selectedItem to your second list.
DefaultListModel model = (DefaultListModel) list2.getModel();
if(model == null)
{
model = new DefaultListModel();
list2.setModel(model);
}
model.addElement(selectedItem);
}
}
};
list.addMouseListener(mouseListener);
Вы также можете сделать это с нажатой клавишей Enter, добавив KeyListener:
jlist.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if (e.getKeyCode() == KeyEvent.VK_ENTER){
//do what you want to do
}
}
});
Я знаю, что это не для двойного щелчка, но некоторые люди хотят сделать это с помощью кнопки Enter вместо этого, как я хотел.
public void addActionListener(final ActionListener al) {
jList.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
al.actionPerformed(new ActionEvent(e.getSource(), e.getID(), "ENTER"));
}
}
});
jList().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
al.actionPerformed(new ActionEvent(e.getSource(), e.getID(), "ENTER"));
}
}
});
}
Я сделал это уже в вашем коде в другой вопрос? [ссылка] Я хочу добавить слушатель действия из одного JList в другой JList, и как JList может отображаться без какого-либо текста внутри?
Единственное, что вы должны сделать, это вставить его в оператор @Bala R's if, проверяющий количество кликов:
if (e.getClickCount () == 2) {
//ваш код
}
На самом деле вам лучше использовать addElement(selectedItem); метод, как в коде @Bala R вместо add(orderList.getModel().getSize(), selectedItem); в моем коде. Оба добавляют элемент в конец, но addElement выглядит лучше, и вам не нужно извлекать размер модели.
Ой, Боро.