1

JScrollPane の内容を読み取る方法はありますか?

私が実装したのは、メソッドを使用しDefaultTableModelthree columns追加されたです。addColumn()これDefaultTableModelを a の宣言と実装の引数として使用しJTableます。これJTableは、後で a の宣言と実装への引数として使用されますJScrollPane。コードの実行中、メソッドDefaultTableModelを使用して現在を追加していaddRow()ます。当面の目的は、追加された行の内容を読み取ることです。

誰か提案はありますか?すべてをいただければ幸いです。

JTabbedPane tabbedPane = new JTabbedPane();
DefaultTableModel model = new DefaultTableModel();

model.addColumn("Column1");
model.addColumn("Column2");
model.addColumn("Column3");

JTable testResults = new JTable(model) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
};

JScrollPane resultTab = new JScrollPane(testResults);
resultTab.setName("Tab1");
resultTab.setVisible(true);

Thread thread1 = new Thread() {
    public void run() {
        if(tabbedPane.getSelectedComponent().getName().compareTo("Tab1") == 0) {
            model.addRow(new Object[]{"content1", "content2", "content3"});
            model.addRow(new Object[]{"content4", "content5", "content6"});
            ...
            ...
            ...
            model.addRow(new Object[]{"this", "will", "continue"});
        }
        else {
            model.addRow(new Object[]{"content1", "content2", "content3"});
            model.addRow(new Object[]{"content4", "content5", "content6"});
        }
    };
thread1.start();

「content1」、「content2」、「content3」、「content4」、「content5」、「content6」などのデータを読み取りたいと考えています。省略記号は、ソース コード全体に未定義の数の行が追加されていることを表しています。

4

3 に答える 3

1
table.getModel().getValueAt(0, 0);

これにより、テーブルモデルから「contents1」が返されます。

table.getModel().getValueAt(0, 1);

これにより、contents2が返されます。

詳細については、 TabelModelを確認してください。

于 2012-07-20T21:27:58.250 に答える
0

ロビンは良い点を提案しました。EDTスレッドに行を追加する必要があります。行をフェッチする長時間実行プロセスがある場合は、SwingWorkerを使用してそれらの行を取得し、TableModelに追加することをお勧めします。これを行うには、具体的な実装(この場合はDefaultTableModel)を使用する必要があります。

于 2012-07-20T16:05:53.503 に答える