ホームページ > Java > &#&チュートリアル > ItemEvent をトリガーした JComboBox を含む JTable 行を特定するにはどうすればよいですか?

ItemEvent をトリガーした JComboBox を含む JTable 行を特定するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-17 16:04:14
オリジナル
664 人が閲覧しました

How to Determine the JTable Row Containing a JComboBox That Triggered an ItemEvent?

JTable 内の JComboBox セルに関連付けられた行の決定

最初の質問:

行を確認することが目的です。 ItemEvent がトリガーされたときに、特定のセル内の JComboBox を含む JTable 内の番号JComboBox。この行番号は、JComboBox の変更後に同じ行内の別のセルが関与する後続のアクションにとって重要です。

応答:

JComboBox を次のように利用しているようです。 JTable 内のエディタ。このようなシナリオでは、TableCellEditor クラスの getTableCellEditorComponent() メソッドにより、パラメーターの 1 つとして行へのアクセスが提供されます。詳細については、次のリソースを参照してください。

  • Java チュートリアル: エディタとしてコンボ ボックスを使用する
  • 例: コンボ ボックス エディタのカスタマイズ

値の同期に関する補足:

へ依存列の値を JComboBox 列の値と同期し、テーブル モデルの getValueAt() メソッドをオーバーライドします。これにより、JComboBox 列の変更された内容に基づいて更新された値を返すことができます。

追加の例:

以下のコードは、依存列を保持したこのアプローチを示しています。オーバーライドされた getValueAt() メソッドを使用して JComboBox 列と同期されます:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Example {

  private static final int DEPENDENT_COL = 1;
  private static final int ITEM_COL = 2;
  private static final String[] columnNames = {"Col 1", "Col 2", "Col 3"};

  public static void main(String[] args) {
    // Create table model
    DefaultTableModel model = new DefaultTableModel(columnNames, 0) {
      @Override
      public Object getValueAt(int row, int col) {
        if (col == DEPENDENT_COL) {
          return "C2:" + this.getValueAt(row, ITEM_COL);
        } else {
          return super.getValueAt(row, col);
        }
      }
    };

    // Add rows to table model
    for (int i = 0; i < 16; i++) {
      model.addRow(new Object[] {"C1", "C2", "Item1"});
    }

    // Create table and customize JComboBox column
    JTable table = new JTable(model);
    TableColumn col = table.getColumnModel().getColumn(ITEM_COL);
    String[] items = {"Item1", "Item2", "Item3"};
    JComboBox combo = new JComboBox(items);
    col.setCellEditor(new DefaultCellEditor(combo));

    // Create the frame and add the table
    JFrame frame = new JFrame();
    frame.add(new JScrollPane(table));
    frame.pack();
    frame.setVisible(true);
  }
}
ログイン後にコピー

以上がItemEvent をトリガーした JComboBox を含む JTable 行を特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート