JTable
(マスター)にListSelectionListener
を追加して、行が選択されたときにキャッチし、選択した行に応じて別のJTable
(詳細)を設定します。 いくつかの要件が変更され、条件が満たされた場合、ユーザーが別の行をクリックしたときにYES/NOオプションを使用してJOptionPane
を表示し、YESをクリックして新しい行を選択できる場合にのみ表示します。 これをどうすれば実現できますか?常にListSelectionListener
を使用しますか?私はそれが選択が行われた後にのみ提起されるので、そうは思わない。JTable:ユーザー入力に応じて行を選択するのを待つ
0
A
答えて
1
はい、
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event) {
// do some actions here, for example
// print first column value from selected row
System.out.println(table.getValueAt(table.getSelectedRow(), 0).toString());
}
});
0
確認のために、ユーザーが別の行にクリックし、
何ユーザーが別の行に移動するためにアップ/ダウンの矢印キーを使用する場合は?
両方の場合のデフォルトの動作は、行を自動的に選択することです。
JTableのchangeSelection(...)
メソッドをオーバーライドすることができます。私はこれがマウスやキーボードのロジックによって行の選択を変更するために呼び出されるメソッドだと思います。
ロジックを追加してオプションペインを表示し、「はい」を選択するとsuper.changeSelection(...)
が呼び出されます。
しかし、このオプションペインがポップアップし続けると、キーボードを使用してテーブルを下にスクロールしてみると、私はイライラします。マウスとキーボードの両方を効果的にサポートするユーザーインターフェイスを設計することを忘れないでください。
関連する問題
- 1. ユーザー入力に応答するShiny DataTable行の選択
- 2. 前の選択オプションに応じて選択入力を無効にする
- 3. ユーザー入力に応じて選択オプションを並べ替える方法
- 4. ユーザー入力:2行を選択
- 5. ドロップダウンから選択した内容に応じて入力を自動入力
- 6. ユーザー入力に応じてページにリダイレクト
- 7. ユーザーの選択に応じてURLを作成するAngularJS
- 8. 選択項目の値に応じて入力フィールドを無効にするAngularjs
- 9. 選択したオプションに応じて自動入力フィールド
- 10. ユーザの入力に応じて適切なelse文を選択する
- 11. 選択からの値に応じて 'N'入力を描画する
- 12. ユーザーの選択に応じて別のJSONを選択してください
- 13. 選択入力に応じてボタンを長時間有効/無効にする
- 14. ユーザーに応じてScene(UIStoryBoard)を選択する方法は?
- 15. DataGridViewにデータを追加するユーザーの入力に応じて
- 16. C#ポップアップウィンドウを待って入力用に選択する方法
- 17. 与えられた入力値に応じてオプションを選択する方法
- 18. 入力量と選択に応じてスコアを修正する方法
- 19. ユーザーの入力に応じて関数を作成する
- 20. デバッグ中にユーザー入力を待つRcpp
- 21. ユーザーの選択に基づいて入力フィールドを表示する(選択)
- 22. HTMLユーザーの入力値を1つの値にまとめて入力に応じて更新する
- 23. ユーザー入力に応じてスクリプトをロードする
- 24. ユーザー入力に応じてn回変数を作成する
- 25. ユーザー入力に応じてフィーチャーをインストールする
- 26. Angular.js - ユーザー入力に応じてjsonリクエストをスライスする
- 27. JTableのソート - 行の選択
- 28. ユーザーの選択に応じて特定のフィールドを持つJavaスクリプトフォーム
- 29. ユーザーの入力に応じてリピーターを生成します。
- 30. JTableのすべての行を選択するには?
ありがとうございます。私は、valueChanged()が起動されたときに、新しい選択行がすでに設定されているため、ユーザーがJOptionPaneで「はい」または「今」をクリックしていたためです。代わりに、私はそれを待つ必要がある –
ああ、sr私の勘違いについては、https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#modelchangeに説明されているようにTableModelListenerを追加する必要があります。 リスナーで他のセル値の値をプログラマチックに更新したら、model.fireTableCellUpdatedを呼び出してスウィングに変更を知らせる必要があります https://docs.oracle.com/javase/6/docs /api/javax/swing/table/AbstractTableModel.html#fireTableCellUpdated%28int,%20int%29 –