我有一個帶有一個字符串數組的JList。基本上它顯示一個餐廳菜單。 右邊JList我有另一個JList是空的。每當用戶雙擊第一個JList中的字符串(顯示菜單時),我希望它顯示在緊挨着它的下一個JList上。添加一個ActionListener到一個JList
我該怎麼做?
我有一個帶有一個字符串數組的JList。基本上它顯示一個餐廳菜單。 右邊JList我有另一個JList是空的。每當用戶雙擊第一個JList中的字符串(顯示菜單時),我希望它顯示在緊挨着它的下一個JList上。添加一個ActionListener到一個JList
我該怎麼做?
您可以嘗試
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);
我已經在你的代碼中的其他問題做了嗎? [鏈接] 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。
你也可以通過添加一個KeyListener的按下Enter鍵,這樣做:
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"));
}
}
});
}
+1代碼很好。如果我非常挑剔,那麼我只能說,在這裏投射字符串並不是必須的。 :) – Boro 2011-04-10 14:23:10