0

私はLinkedHashSetBookオブジェクトを持っています。Bookオブジェクトには次のフィールドがあります。

private int id;
private String author = "";
private String title = "";
private boolean isRead;
private String dateStamp = "";
private static int counter = 0;

JTable次の列があるmy に入れてもらいたい:

String [] columnNames = {"ID","Title", "Author", "Status", "Date Read"};

これどうやってするの?またisRead、テーブルのチェックボックスを使用してフィールドを編集可能にすることは可能ですか?

4

3 に答える 3

1

これは、テーブル用に作成したサンプル モデルです。

public class CustomModel extends AbstractTableModel {

private Object[] colNames ={"ID","Title", "Author", "Status", "Date Read"};
private LinkedHashSet<CustomClass> data; 

public TableModelTop() {
    this.data = getDataForDropList();
}

public int getRowCount() {
    return data.size();
}

public int getColumnCount() {
    return colNames.length;
}

@Override
public String getColumnName(int columnIndex) {
    return (String) colNames[columnIndex];
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    // Set Values here;
}

public Object getValueAt(int rowIndex, int columnIndex) {
    // Get row Values here;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
    return true;
}

@Override
public Class<?> getColumnClass(int columnIndex) {
    // Depending on the type of the column. Return data type;
}


/**
 * Populate the data from here.
 * @return LinkedHashSet<CustomClass>
 */
private LinkedHashSet<CustomClass> getDataForDropList() {
    LinkedHashSet<CustomClass> modelList = new  LinkedHashSet<CustomClass>();
    for(int i = 0; i< 5; i++) {

    // Create custom Object and add them to the LinkedHashSet.
            // Create a CustomClass object and add it to the LinkedHashSet
             modelList.add(customClassObject);
    }
           // Finally return the llinkedhashset
    return modelList;
}
}

この後、テーブル モデルを呼び出して、これを JTable に割り当てます。

JTable table = new JTable(new CustomModel());
于 2012-11-08T16:03:56.877 に答える
1

の具体的な使用例として、この関連する に示すように、によって継承されたメソッドを利用して の実装を簡素化AbstractTableModelできます。この例に示すように、type の要素に使用されるデフォルトのレンダラーとエディターtoArray()LinkedHashSetgetValueAt()EnvTableTestJTable JCheckBoxTableModelBoolean.class

于 2012-11-09T02:47:57.083 に答える
1

を拡張するクラスが必要ですAbstractTableModel。このクラスはLinkedHashSet、テーブルのデータ ソースとして your を使用する必要があります。によって提供される基本的な実装は、AbstractTableModelほとんどのニーズに適合するはずです。そうでない場合は、カスタマイズする必要があるメソッドをオーバーライドできます。

このチュートリアルJTableは、オブジェクトがどのように機能するかを理解するのに役立ちます。

于 2012-11-08T14:47:15.840 に答える