0

JTable とそれに関連付けられている TableModel の問題に直面しています。ここでの問題は、JTable で行を選択した場合、TableModel から特定の行オブジェクトを取得してどこかに渡したいとします。これを効率的に行う方法を知っている人はいますか?

4

2 に答える 2

1

私は同様のアプリケーションを実行しました。私のタスクでは、あるテーブルからデータ(行/行)を取得し、それを別のテーブルにドラッグする必要があります。つまり、ユーザーが1つのテーブルから行を選択した場合、別のテーブルにドラッグできるはずです。

ユーザーが行を選択するときは、tableA.getSelectedRow()を使用します。次に、ループして、選択した各行のすべての列を取得します。各行を文字列に格納し、行の終わりとして改行文字を使用します。インポート中に文字列を解析し、各行を取得します。

// Sample code that I have worked on.
protected String exportString(JComponent c) {
JTable table = (JTable) c;
rows = table.getSelectedRows();
int colCount = table.getColumnCount();
    StringBuffer buff = new StringBuffer();
for (int i = 0; i < rows.length; i++) {
     for (int j = 0; j < colCount; j++) {
          Object val = table.getValueAt(rows[i], j);
          if (j != colCount - 1) {
              buff.append(",");
          }
         }
     if (i != rows.length - 1) {
         buff.append("\n");
     }
     }
     System.out.println("Export Success");
 return buff.toString();
}

これがお役に立てば幸いです。

于 2012-09-13T03:49:24.427 に答える
1

カスタム TableModel があると仮定すると、これを行うことができます。

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (rowIndex >= items.size()) {
    return null;
}
Object obj = items.get(rowIndex);
if (obj == null) {
      return null;
}

switch (columnIndex){
case -1:
          return obj;
    case 0: ...

items(それがオブジェクトを保存するリストであると仮定します)

...そして、特定の行でオブジェクトが必要な場合は、呼び出すだけで取得できますtableModel.getValueAt(row, -1);

于 2012-09-12T21:45:54.313 に答える