ホームページ >Java >&#&チュートリアル >項目選択時に JComboBox を含む JTable セルの行インデックスを取得するにはどうすればよいですか?

項目選択時に JComboBox を含む JTable セルの行インデックスを取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-17 10:43:25688ブラウズ

How to Retrieve the Row Index of a JTable Cell Containing a JComboBox on Item Selection?

JTable セル内の JComboBox が ItemEvent をトリガーするときに CellRow を取得する方法

内部に JComboBox を含む JTable を操作する場合セルでは、項目の変更時に JComboBox が配置されている特定の行を取得する必要が生じる場合があります。 JComboBox に関連付けられた ItemListener はこの情報を直接提供しないため、これは難しい場合があります。

デフォルトの TableCellEditor をオーバーライドする

1 つの方法は、デフォルトの TableCellEditor をオーバーライドすることです。行アクセスを含む独自の実装を提供してください。 getTableCellEditorComponent() メソッドをオーバーライドすることで、行番号をパラメータとして取得できます。

import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class CustomTableCellEditor extends DefaultCellEditor implements TableCellRenderer {

    private int currentRow; // Add a field to track the current row

    @Override
    public TableCellEditorComponent getTableCellEditorComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        currentRow = row; // Capture the current row
        return super.getTableCellEditorComponent(table, value, isSelected, hasFocus, row, column);
    }
}

TableModel の getValueAt() メソッドをオーバーライドする

必要な場合同じ行内の別の列の値に基づいてアクションを実行するには、TableModel の getValueAt() メソッドをオーバーライドして、変更された項目に基づいて返される値を調整します。例:

import javax.swing.table.AbstractTableModel;

public class CustomTableModel extends AbstractTableModel {

    @Override
    public Object getValueAt(int row, int column) {
        if (column == 1) {
            return "Dependent Value: " + this.getValueAt(row, 2); // Modify the value based on the selected item in column 2
        } else {
            return super.getValueAt(row, column);
        }
    }
}

これらの手法を実装すると、JTable セル内の JComboBox 内の ItemEvent に関連付けられた CellRow を効果的に取得でき、選択した項目と行に基づいて必要なアクションを実行できるようになります。

以上が項目選択時に JComboBox を含む JTable セルの行インデックスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。