2011-04-04 66 views
3

我正在使用包含名爲Subject的列的可編輯JTable。當第一行爲空並且用戶單擊主題單元格以添加新任務時,默認情況下,用戶必須單擊兩次以使單元格可編輯。我想通過單擊將其設置爲可編輯狀態,並通過雙擊打開另一個窗體。我試過MouseListener,但一直無法解決它。有沒有辦法解決這個問題?如果是這樣,那是什麼?如何使一個JTable單元在單擊上執行不同的操作而不是雙擊?

我的代碼:

class mouseRenderer extends DefaultTableCellRenderer { 
    JLabel lblcell = new JLabel(); 

    public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, 
      int column) { 
     ttable.addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent e) { 
       selrow = ttable.getSelectedRow(); 
       selcol = ttable.getSelectedColumn(); 

       if(e.getClickCount() == 1) { 
        if(selrow == 0) { 
         lblcell.setText(""); 
        } 
       } 
      } 
     }); 
     return lblcell; 
    } 
} 

回答

5

對於一鍵編輯,您可以嘗試在jtable中使用celleditor的'setClickCountToStart()'方法。

+0

呵呵好吧....謝謝..試試.. – bsm 2011-04-04 11:25:14

+0

如果編輯器的類型是DefaultCellEditor(默認註冊的那些) – kleopatra 2011-04-04 12:19:34

+0

非常感謝..現在它的工作.. – bsm 2011-04-04 13:33:34

0

MouseListener是去上連續捕獲雙擊的方式。它應該工作正常。

只要單擊一次即可編輯,您可能希望使用MouseMotionListener選擇行並讓JTable採用單擊進行編輯。另一個選擇可能是使用MouseListener來檢測被單擊的單元格,但這會變得有點麻煩。

+0

由於設置..讓我試試MouseMotionListener.But的我沒有得到如何使JTable中僅通過單次點擊編輯。讓我再嘗試一次。 – bsm 2011-04-04 11:23:17

4

您可以嘗試創建這樣一個自定義CellEditor中,並與setCellEditor()

public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor { 

    public boolean isCellEditable(EventObject evt) { 
     if (evt instanceof MouseEvent) { 
      int clickCount; 

      // For single-click activation 
      clickCount = 1; 

      // For double-click activation 
      clickCount = 2; 

      // For triple-click activation 
      clickCount = 3; 

      return ((MouseEvent)evt).getClickCount() >= clickCount; 
     } 
     return true; 
    } 
} 
相關問題