0

プログラムは、JTable.

例: vollist.java クラスからこの出力を取得します。

while (volumeIter.hasNext()) {
    volume = volumeIter.next();
    System.out.println(volume.getName());
}

コンソール出力:

vol1
vol2
vol3
...

でこのコンソール出力を取得するにはどうすればよいですかJTable

table = new JTable();
table.setModel(new DefaultTableModel(
    new Object[][] {
        {null, vollist.volname(null), null, null, null},
        {null, vollist.volname(null), null, null, null},
        {null, vollist.volname(null), null, null, null},
    },
    new String[] {
        "Nr:", "Volume Name", "TotalSize [MB]", "Used [MB]", "Status"
    }
));

それは、row1 -> vol1 row2 -> vol1 のみを表示します ...... コンソールのように、row1 -> vol1 row2 -> vol2 (カウントアップ) のような出力を得るにはどうすればよいですか?

4

2 に答える 2

1

TableModel を定義して実装します (この場合は AbstractTableModel を拡張します)

これはより広範囲ですが、OOP の強い型付けです。

class VolumeTableModel extends AbstractTableModel {
    private String[] columnNames = {"Nr:", "Volume Name", "TotalSize [MB]", "Used [MB]", "Status"};
    private ArrayList<Volume> volumes;

    public VolumeTableModel(ArrayList<Volume> volumes) {
        this.volumes = volumes;
    }

    public VolumeTableModel() {
        volumes = new ArrayList<Volume>();
    }

    public void addVolume(Volume volume) {
        volumes.add(volume);
        fireTableRowsInserted(volumes.size()-1, volumes.size()-1);
    }

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

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

    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Object getValueAt(int row, int col) {
        Volume volume = volumes.get(row);
        switch (col) {
            case 0: return volume.number;
            case 1: return volume.name;
            case 2: return volume.totalSize;
            case 3: return volume.usedSize;
            case 4: return volume.status;
            default: return null;
        }
    }

    public Class getColumnClass(int col) {
        return String.class;
        //or just as example
        switch (col) {
            case 0: return Integer.class;
            case 1: return String.class;
            case 2: return Integer.class;
            case 3: return Integer.class;
            case 4: return String.class;
            default: return String.class;
        }
    }
}

それをテーブルの TableModel として指定します

//if you have the Volume ArrayList
VolumeTableModel myTableModel = new VolumeTableModel(volumesArrayList);
//if you dont have the Volume ArrayList
VolumeTableModel myTableModel = new VolumeTableModel();
myTableModel.addVolume(volume);
JTable table = new JTable(myTableModel);

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#dataからのソース

于 2013-09-05T21:30:59.180 に答える