2011-04-10 98 views
3

我有一个带有一个字符串数组的JList。基本上它显示一个餐厅菜单。 右边JList我有另一个JList是空的。每当用户双击第一个JList中的字符串(显示菜单时),我希望它显示在紧挨着它的下一个JList上。添加一个ActionListener到一个JList

我该怎么做?

回答

11

您可以尝试

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); 
+1

+1代码很好。如果我非常挑剔,那么我只能说,在这里投射字符串并不是必须的。 :) – Boro 2011-04-10 14:23:10

0

我已经在你的代码中的其他问题做了吗? [链接] I want to add an action listener from one JList to another JList and how can a JList appear with out any text inside?

唯一觉得你必须做有把它变成了@Bala的r if语句做的点击次数的检查:

如果(e.getClickCount()== 2) {

//你的代码

}

其实你会更好地使用addElement方法(将selectedItem);方法,如在@Bala R的代码中,而不是 add(orderList.getModel()。getSize(),selectedItem);在我的代码中。两者都添加到最后的项目,但addElement看起来更好,你不需要检索模型的大小。

Oi,Boro。

2

你也可以通过添加一个KeyListener的按下Enter键,这样做:

jlist.addKeyListener(new KeyAdapter(){ 
public void keyPressed(KeyEvent e){ 
    if (e.getKeyCode() == KeyEvent.VK_ENTER){ 
    //do what you want to do  
} 
} 
}); 

我知道,这不是双击,但有些人想用Enter按钮做到这一点,而不是正如我想要做的那样。

0
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")); 
      } 
     } 
    }); 

} 
相关问题