2013-05-06 40 views
0

我有一個包含患者姓名的行的表。我想點擊表格中的名稱,根據病人的點擊情況,不同的屬性會顯示在下面的框中。將聽衆添加到表中

這是我到目前爲止所做的。我不知道我所做的是否正確。在表格所在的GUI類中,我添加了如圖所示的偵聽器。不用說它不工作。有人可以解釋需要做什麼嗎?我很困惑這一切。

//Adding listeners for the table data. 
void rowClickListener(MouseListener listenForMouseClickonRow) 
{ 
    table.addMouseListener(listenForMouseClickonRow); 
    //table.getModel().addTableModelListener(listenForMouseClickonRow); 
} 

然後在我的控制器類我添加了一個類它迫使我添加所有這些事件,我不甚至想:

public class rowClickListener implements MouseListener 
{ 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 1) 
     { 
      System.out.println("TEST mouse click"); 
     } 
    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // TODO Auto-generated method stub 
    } 
} 
+1

也許增加一個ListSelectionListener到表模型會更好,這樣你可以得到選定的行號,然後從你擁有它的地方獲取數據。 – Noe 2013-05-06 19:31:48

+1

是的,ListSelectionListener是要走的路。這樣,當用戶使用鍵盤時,邏輯也將工作。應用程序應設計爲使用鼠標或鍵盤。高級用戶使用鍵盤,新​​手使用鼠標。 – camickr 2013-05-06 19:33:30

回答

3
yourtable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 
     @Override 
     public void valueChanged(ListSelectionEvent e) { 
      //your handle 
     } 
    } 

我認爲,將工作方式更好。用ListSelectionEvent你可以得到選定的行。

此外,如果一次只能選擇一條記錄,請不要忘記將表的選擇模式設置爲SINGLE_SELECTION