0

私はこのコードを持っています:

listTable.addMouseListener(new MouseAdapter() {
                 public void mouseClicked(MouseEvent e) {

                  if (e.getClickCount() == 1) {
                  JTable target = (JTable)e.getSource();

                  int row = target.getSelectedRow();
                  int column = target.getSelectedColumn();

                  String title = listTable.getValueAt(row, column).toString();
                  String duration = listTable.getValueAt(row, column+1).toString();
                  String genre = listTable.getValueAt(row, column+2).toString();
                  String actor = listTable.getValueAt(row, column+3).toString();
                  String director = listTable.getValueAt(row, column+4).toString();
                  //String rentable = listTable.getValueAt(row, column+5).toString();
                  //String synopsis = listTable.getValueAt(row, column+6).toString();

                  txtTitle.setText(title);
                  txtDuration.setText(duration);
                  txtGenre.setText(genre);


                  }
                });

これにより、次のことが可能になります。

  • 行が選択されると、列の値が JTextBoxes に渡されます。

ただし、デフォルトで最初の列をクリックしないと、選択が文字化けします。たとえば、最初に「タイトル」列をクリックせずに「期間」列をクリックすると、期間がtxtTitleに入れられ、他のものも混同されます。

行が選択されたときに最初の列をデフォルトで選択するコードを追加するにはどうすればよいですか?

これは何が起こるかのスクリーンショットです:

ここに画像の説明を入力

ありがとう、ブライアン

4

4 に答える 4

3

これを変える

int column = target.getSelectedColumn(); 

int column = 0; 

あなたのバージョンは、ユーザーがクリックした場所から列インデックスを取得します。最初のものが必要です (インデックス 0)

于 2012-04-14T13:28:28.213 に答える
3

すべてはListSelectionModelの設定方法に依存しますが、私にとってはうまくいきます

myTable.changeSelection(row, column, false, false);
于 2012-04-14T13:30:12.227 に答える
1

列の選択を強制するのではなく、既知の列に基づいて常に値を抽出しないのはなぜですか?

たとえば、次のように置き換えることができます。

String title = listTable.getValueAt(row, column).toString();

と:

String title = listTable.getValueAt(row, 0).toString();

列を並べ替える機能を提供する場合は、代わりに試すことができますtable.getModel().getValueAt(convertRowIndextoModel(row), 0);

于 2012-04-14T13:30:24.403 に答える
0

Duration Columnをクリックすると明らかです

int column = target.getSelectedColumn();

Duration の列値を取得するため、

String title = listTable.getValueAt(row, column).toString();

期間列から値を取得します。これに取り組む最善の方法は、列番号をハードコードすることです。テーブルが次の順序であるとします。タイトル: 列 0 期間: 列 1 ジャンル: 列 2 など

簡単に言えばString title = listTable.getValueAt(row, 0).toString();

String duration = listTable.getValueAt(row,1).toString(); 

等々..!!

それが役に立てば幸い

于 2012-04-14T13:31:06.597 に答える