我有一个带有一个字符串数组的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