2012-05-11 63 views
0

我有一個三列JTable:一個不可編輯的JTextField,一個可編輯的JTextArea和一個可編輯的JTextField。接受關注表中的JTextField和JTextArea

我的問題是雙重的。我希望最後兩列是背景突出顯示的,並準備好在編輯時使用可見光標進行編輯。他們也使用特定的字體;因此是自定義渲染器和編輯器。

如果我在其中一個單元格中單擊兩次,我很成功,但如果我使用鍵盤到達那裏,則無法成功。我可以從單元格切換到單元格(感謝對JTextArea的setTraversalKeys調用)並開始鍵入,但重點在哪裏並不明顯。

我有一個焦點事件監聽器,它設置無論哪個組件觸發它的背景顏色。它用於用於單元格編輯的JTextField和JTextArea,以及用於單元格渲染器的很好的度量。但只有鼠標點擊纔會觸發它們。

如何確保焦點事件在我所關注的單元格上觸發?

謝謝。

+2

請修改您的問題以包含展示您描述的問題的[sscce](http://sscce.org/)。 – trashgod

+0

@Elly這可能是關於一個代碼行的問題,也許不是,用[SSCCE](http://sscce.org/)編輯你的問題,用Focus和TableCellEditor展示了你的問題 – mKorbel

回答

1

你應該聽選擇的變化,並開始編輯在你需要它:

final JTable table = new JTable (
      new String[][]{ { "col1", "col2", "col3" }, { "col1", "col2", "col3" } }, 
      new String[]{ "1", "2", "3" }); 
    ListSelectionListener listener = new ListSelectionListener() 
    { 
     public void valueChanged (ListSelectionEvent e) 
     { 
      if (table.getSelectedRow() != -1 && table.getSelectedColumn() != -1) 
      { 
       table.editCellAt (table.getSelectedRow(), table.getSelectedColumn()); 
      } 
     } 
    }; 
    table.getColumnModel().getSelectionModel().addListSelectionListener (listener); 
    table.getSelectionModel().addListSelectionListener (listener); 

那只是一個例子,你如何能做到這一點。

0

謝謝大家。這是我結束了:

ListSelectionListener listener = new ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent e) { 
      int row = table.getSelectedRow(); 
      int col = table.getSelectedColumn(); 

      // Only columns beyond the first are edited... 
      if (row != -1 && col > 0) { 
       table.editCellAt(row, col); 
       try { 
        Robot robot = new Robot(); 
        robot.keyPress(KeyEvent.VK_F2); 
        robot.keyRelease(KeyEvent.VK_F2); 
       } catch (AWTException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     } 
    }; 

的細胞應答的editCell(創建)調用設置上的JTextArea和JTextField中他們所使用的背景顏色編輯器。機器人的目的是模擬F2的凹陷,從而顯示光標(錯誤的術語,我知道,但正確的一個逃脫了我)。

儘管出現陰影,但機器人在向前撥動但不向後撥動時工作。我不知道這個代碼片斷是否在這種情況下執行,儘管單元編輯器是以某種方式創建的。由於這個程序僅供我自己使用,所以我會在前些日子嘗試解決這個小問題。

相關問題