2010-05-07 12 views
1

我是Swing的一位新的,非常綠色的用戶。我設法使用java.sun教程中的示例創建表類,並且我設法動態地將數據加載到它中。我希望能夠通過顯示一個對話框來對點擊行做出反應。如何添加將識別所選行號的事件處理程序?如何將mouseClicked事件添加到擺動表中?

主要功能代碼:

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 

     public void run() { 
      try { 
       MainWindow window = new MainWindow(); 
       window.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       //Create and set up the content pane. 
       createAndShowGUI(); 
       //... 
      } 
     } 
    } 
} 

private static void createAndShowGUI() { 
    //Create and set up the window. 

    JFrame frame = new JFrame("Data Table"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //Create and set up data of the content pane. 
    TableClass mainTable = new TableClass(fh.getColNames(), fh.getTableContent()); 

    mainTable.setOpaque(true); 
    frame.setContentPane(mainTable); 


    //Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
} 

謝謝

+0

重新格式化的代碼;如果不正確請回復。 – trashgod 2010-05-07 17:44:32

回答

5
 table.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 1) { 
        int selectedRowIndex = table.getSelectedRow(); 
        //show your dialog with the selected row's contents 
       } 
      } 
     }); 
+0

SwingUtilities.isLeftMouseButton(e)是個不錯的把戲+1 – Xorty 2010-05-07 18:00:11

+0

這是基於表格選擇來找出鼠標被點擊進入哪個單元格的。這對左鍵單擊來說基本沒問題,但是如何檢測右鍵點擊是?右擊不調整表格選擇... – zigdon 2010-08-09 20:10:57

1

幾個百分點。

Bozhidar Batsov的答案是正確的。但是,您可能不一定有對錶的引用(例如,如果您的鼠標偵聽器在另一個類或其他類中)。問題是,該表可以從MouseEvent的getSource()方法中找到。您可以安全地將其轉換爲JTable。

另外,如果表中尚未選定任何行,則table.getSelectedRow()可能會返回-1。例如,如果用戶點擊表格的「空白」(網格外的區域,但仍在文本區域中),則會發生這種情況。只要確保在代碼中測試-1即可。

+0

感謝所有給我好點子的人。我或多或少地使用Bozhidar Batsov給我的代碼解決了這個問題。如果表中沒有選擇任何行,我也會照顧到返回-1(來自taftser的警告) – Ayelet 2010-05-08 11:22:46

+0

有沒有一種方法可以標記我的問題已經回答,我不需要更多的答案? (我不僅是Swing的新手,也是本網站的新手) – Ayelet 2010-05-08 11:25:17

+0

單擊您最喜歡的答案旁邊的勾號,它會變綠,將其標記爲您的首選答案並有效解決問題。 – 2010-05-12 13:31:55

相關問題