2011-08-04 7 views
0

JTable内の対応するJCheckBoxのチェックボックスが選択されている場合、他のセルの値を取得する方法。私は今、私はJCheckBoxの上でいくつかのワンクリックが、それはTliScanTime-StartTimeから値を取っただろうときJCheckBoxのが確認されたときに、選択された行のStartTime-CompletedTime colum手段がやりたい jtableの対応するチェックボックスのチェックボックスが選択されている場合、他のセルの値を取得する方法

JCheckBox checkBox = new javax.swing.JCheckBox(); 
jTable1 = new javax.swing.JTable(); 

jTable1.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {  
    }, 
    new String [] { 
     "Station", "OperationName", "TliScantime", "StartTime", "Completedtime", 
     "TliScanTime-StartTime", "StartTime-CompletedTime", "Select" 
    } 
) { 
    Class[] types = new Class [] { 
     java.lang.String.class, java.lang.String.class, java.lang.String.class, 
     java.lang.String.class, java.lang.String.class, java.lang.String.class, 
     java.lang.String.class, java.lang.Boolean.class 
    }; 

    public Class getColumnClass(int columnIndex) { 
     return types [columnIndex]; 
    } 
}); 
jTable1.getColumn("Select").setCellEditor(new DefaultCellEditor(checkBox)); 
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); 
jTable1.getColumnModel().getColumn(0).setPreferredWidth(120); 
jTable1.getColumnModel().getColumn(1).setPreferredWidth(100); 
jTable1.getColumnModel().getColumn(2).setPreferredWidth(80); 
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100); 
jTable1.getColumnModel().getColumn(4).setPreferredWidth(100); 
jTable1.getColumnModel().getColumn(5).setPreferredWidth(180); 
jTable1.getColumnModel().getColumn(6).setPreferredWidth(180); 

jScrollPane1.setViewportView(jTable1); 

JTableの

にJCheckBoxのを追加します。そして、それは2つの別々のJLablesの TliScanTime-StartTimeStartTime-CompletedTimeの平均時間を表示します。値が動的に変更されると、チェックボックスのクリックごとに平均時間が変更されます。すべての行にチェックボックスを追加します。

あなたはhereを示したアプローチを適応させることができるかもしれ事前

+0

を実装する必要があり、「選択した行、」あなたは「すべての行が選択されたチェックボックスを有する」または「'MULTIPLE_INTERVAL_SELECTION'選択のすべての行を意味しますモデル? – trashgod

+0

問題に無関係なコードを表示しないでください。(フィールサイズの設定とは関係ありません) – kleopatra

答えて

1

にいくつかのコーディングexample.thanksといくつかの助けを与えてください。

+0

これはセルレンダリングで行われます。これはどのイベント処理を使用しても可能です.JTable1を使用してこれを試してみたいです。 getSelectionModel()。addListSelectionListener(new javax.swing.event.ListSelectionListener(){ )パブリックvoid valueChanged(ListSelectionEventイベント){ // if(jTable1.getValueAt(0,7).equals(null)){ オブジェクトb = jTable1.getValueAt(0,7); のSystem.out.println(B); //} }})。 – moin

+0

いいえ、 'CellEditor'はモデルの変更に必要で、デフォルトエディタには必要な動作がありません。コメントを読むのが難しいコードを表示するために質問を編集してください。 – trashgod

1

JTableのためにあなたがすることで例えばTableModelListener

import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.table.*; 

public class TableCheckboxListenerExample { 

    public static void main(String[] args) { 
     try { 
      JFrame frame = new JFrame(); 
      frame.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); 
      DefaultTableModel model = new DefaultTableModel(new Object[][]{ 
         {Boolean.FALSE, "Row 1"}, 
         {Boolean.TRUE, "Row 2"}}, 
        new String[]{"col1", "col2"}) { 

       private static final long serialVersionUID = 1L; 

       @Override 
       public Class<?> getColumnClass(int columnIndex) { 
        if (getRowCount() > 0 && getValueAt(0, columnIndex) != null) { 
         return getValueAt(0, columnIndex).getClass(); 
        } 
        return super.getColumnClass(columnIndex); 
       } 
      }; 
      model.addTableModelListener(new TableModelListener() { 

       @Override 
       public void tableChanged(TableModelEvent e) { 
        int row = e.getFirstRow(); 
        int column = e.getColumn(); 
        TableModel model = (TableModel) e.getSource(); 
        Object data = model.getValueAt(row, column); 
        if (data instanceof Boolean) { 
         System.out.println("Value changed in Row: " + row + " Column: " + column + " New Value = " + data); 
        } 
       } 
      }); 
      JTable table = new JTable(model); 
      frame.add(new JScrollPane(table)); 
      frame.pack(); 
      frame.setVisible(true); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private TableCheckboxListenerExample() { 
    } 
} 
関連する問題