2011-04-10 99 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")); 
      } 
     } 
    }); 

} 
相關問題