2011-02-18 15 views
5

GUIにJTableがあり、ユーザーがクリックしたセルの値に基づいて数値を返したいとします。これはコードです:JTable内のどのセルが選択されたかをどのようにして判断できますか?

ListSelectionModel newmodel = mytable.getSelectionModel(); 
newmodel.addListSelectionListener(new ListSelectionListener() { 
    @Override 
    public void valueChanged(ListSelectionEvent e) { 
     int row = mytable.getSelectedRow(); 
     int column = mytable.getSelectedColumn(); 

     int cell = getNewNum(); 
     datefield.setText(String.valueOf(cell)); 
    } 
}); 

私はこれにいくつかの問題があります。まず、このメソッドは私のテーブルを編集可能にします。この方法を使う前は、テーブルを編集できませんでしたが、今ではエントリを削除できます。私はAPIを調べましたが、なぜこれがわからないのですか?次に、行3のセルをクリックして、セル3の別の行をクリックすると、イベントは登録されません。現在選択されている行のセルをクリックしてイベントを作成するにはどうすればよいですか?

+0

のListSelectionListenerは、あなたのテーブルを編集可能にするれません追加:

は、最後に必要な値を得るために、あなたは自分のJTableのモデルのgetValueAt(row,col)を呼び出し、またはこのような内容を取得する必要があります。セルの編集可能性は、TableModelのisCellEditable(...)メソッドまたはJTable自体によって制御されます。 – camickr

+0

[JTableセルがクリック/選択されたことを確認するにはどうすればいいですか?](http://stackoverflow.com/questions/4795586/how-can-i-check-which-jtable-cell-has-been-クリックして選択) – jlordo

答えて

7

一般的な方法は、ユーザーがイベントを通じてクリックされたポイントを得ることです:あなたが行く場合

jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
    jTable1.addMouseListener(new java.awt.event.MouseAdapter() { 
     @Override 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      ... 
      int row = jTable1.getSelectedRow(); 
      int col = jTable1.getSelectedColumn()); 
      if (evt.getClickCount() > 1) { // double-click etc... 
       ... 

:ここ

jTable1.addMouseListener(new java.awt.event.MouseAdapter() { 
    @Override 
    public void mouseClicked(java.awt.event.MouseEvent evt) { 
     int row = jTable1.rowAtPoint(evt.getPoint()); 
     int col = jTable1.columnAtPoint(evt.getPoint()); 
     if (row >= 0 && col >= 0) { 
      ...... 

     } 
    } 
}); 

は、選択モードを使用して、第2の選択肢である

public boolean isCellEditable(int row, int col) { 
    return false; 
} 

あなたのJTableは編集できません。

Object foo = jTable1.getModel().getValueAt(row, col); 
+0

私はあなたの最初のソリューションが好きです、それは私が使用しているものです – user489041

関連する問題