2016-10-15 14 views
0

私は2つのテーブルにする必要があります。 JTable1およびJtable2。 Jtable1には、データベースからデータが表示されます。 Jtable2は、Jtable1のすべての行に対してcheckboxを持つ必要があります。私はJtable2の行数をJtable1と同じにしたい。これらの2つのテーブルは互いに隣り合っています。ここNetbeansのjavaを使用してJtableのデータベースから表示されるすべてのデータの隣にJCheckBoxを配置する方法は?

は一例であり:

https://i.stack.imgur.com/SmVEG.jpg

この例では、すべてのデータ項目の横にチェックボックスがあります。 Jtable1のすべてのデータ項目に対してJTable2で生成されたチェックボックスが必要です。ここで

は、より良いアイデアを得るための画像です:

public void fetch() 
    { 

    try 
    { 

    String sqlp = "select * from american"; 
pst = (OraclePreparedStatement) conn.prepareStatement(sqlp); 
    rs = (OracleResultSet) pst.executeQuery(sqlp); 

    jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 


    row =jTable1.getRowCount(); 

    while(i!=row) 
    { 
    jTable2.add(check); 
    } 
    } 
    catch(Exception ex) 
    { 
    JOptionPane.showMessageDialog(null, ex); 
    } 

    } 
+0

これが重複しない場合は、[mcve]を含めて編集して、これらの[例](http://stackoverflow.com/search?tab=votes&q=user)を確認してください。 %3a230513%20%5bjtable%5d%20getcolumnclass%20jcheckbox%20)。 – trashgod

+0

チェックボックス自体を表示します。選択された値などはありません。 – beginner

+0

[例](http://stackoverflow.com/a/4528604/230513)。 – trashgod

答えて

1
jTable2.add(check); 

あなただけのすべての行にJCheckBoxのを追加することはできません。ここで

https://i.stack.imgur.com/pNvNa.png

コードです表。表にはSwingコンポーネントは含まれていません。テーブルのTableModelに含まれるデータをレンダリングします。

テーブルによって使用されるTableModelにデータ(チェックボックスを表す)を追加する必要があります。

DbUtilsクラスは、データを含むTableModelを返します。だから、オプションのカップルしている:

  1. DbUtilsクラスによって返さDefaultTableModelを使用し、モデルへのデータの新しい列を追加します。 DefaultTableModel APIを読んでください。 addColumn(...)メソッドを使用して、新しいデータ列をモデルに追加できます。

列がモデルの末尾に追加されるため、表のビューを変更して表の先頭に列を表示する必要があります。 JTablemoveColumn(...)メソッドを使用してこれを行うことができます。

最後に、getColumnClass(...)メソッドをオーバーライドしてBoolean.classを返すようにして、適切なレンダラー/エディタを使用できるようにする必要があります。

  1. また、現在のモデルをチェックボックスで囲むカスタムTableModelを作成することもできます。このアプローチの例については、How to add checkbox in Jtable populated using rs2xmlを参照してください。

  2. 最後に、DbUtilsを使用しないで、TableModelのデータを完全に制御することができます。このアプローチの例については、Java Resultset to JTable with Checkboxを参照してください。

関連する問題