2013-11-27 53 views
0

在我的Java Swing應用程序,我展示的選擇,使用與一個JList一個JOptionPane的用戶列表,使用下面的代碼:如何讓用戶選擇JOptionPane的項目有雙擊

List<Object> options = getOptions(); 
JList list = new JList(options.toArray()); 
JScrollPane scrollpane = new JScrollPane(); 
JPanel panel = new JPanel(); 
panel.add(scrollpane); 
scrollpane.getViewport().add(list); 
JOptionPane.showMessageDialog(null, scrollpane, 
     "Please select an object", JOptionPane.PLAIN_MESSAGE); 

如何讓用戶通過雙擊選擇一個選項?

回答

3

JList不提供任何特殊的雙或三(或N)鼠標點擊處理,但如果您希望對這些事件採取措施,則很容易添加MouseListener。使用locationToIndex方法確定單擊了哪個單元格。例如:

list.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent e) { 
     if (e.getClickCount() == 2) { 
      int index = list.locationToIndex(e.getPoint()); 
      System.out.println("Double clicked on Item " + index); 
      } 
    } 
}); 

我只需要知道如何給用戶之後關閉對話框 雙擊該項目

在這種鼠標事件,你可以利用SwingUtilities.windowForComponent(list)得到窗口並使用window.dispose()功能進行處理。

+0

幾乎在那裏!現在,爲了徹底解決我的問題,我只需要知道如何在用戶雙擊該項目後(從mouseClicked事件中,我想)關閉對話框。但是如何? – Ricardo

+0

+1,回答OP的問題,但用戶應該能夠使用鼠標或鍵盤。 – camickr

+0

找到答案[這裏](http://stackoverflow.com/a/9860799/2839597) – Ricardo

3

查看List Action的解決方案,該解決方案將允許您使用鼠標或鍵盤從列表中選擇一個項目。

在您創建可以使用行動:

Window window = SwingUtilities.windowForComponent(...); 

獲得您需要處理窗口();