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

itemEvent中にJTableセル内のJComboBoxの行インデックスを取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-09 12:58:11918ブラウズ

How to Retrieve the Row Index of a JComboBox Within a JTable Cell During an ItemEvent?

ItemEvent 中に JTable セル内の JComboBox のセル行を取得する方法

JTable のセル エディタとして JComboBox を使用する場合の場合、ItemEvent 中に変更された JComboBox に関連付けられた行を取得するのが難しい場合があります。この情報は、JComboBox の変更に基づいて更新するときに、同じ行内の他の列にアクセスするために重要です。

解決策:

この問題を解決する鍵は、次のことを理解することです。 TableCellEditor のオーバーライドされたメソッド getTableCellEditorComponent() には、行がパラメーターとして含まれます。以下は、これを活用したソリューションです。

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

public class JComboBoxCellRowAccess {

    public static void main(String[] args) {
        JTable table = createTable();
        JComboBox<String> comboBox = new JComboBox<>(new String[] { "Item1", "Item2", "Item3" });
        TableColumn column = table.getColumnModel().getColumn(1);
        column.setCellEditor(new DefaultCellEditor(comboBox));

        comboBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                int row = getCellRow(comboBox);
                System.out.println("Row: " + row);
            }
        });
    }

    public static int getCellRow(JComboBox<?> comboBox) {
        TableCellEditor editor = comboBox.getCellEditor();
        if (editor != null) {
            Component component = editor.getTableCellEditorComponent(null, null, true, -1, -1);
            return ((JTable) component.getParent()).getSelectedRow();
        }
        return -1;
    }

    public static JTable createTable() {
        DefaultTableModel model = new DefaultTableModel(new Object[][] { { "Row 0" }, { "Row 1" }, { "Row 2" } }, new String[] { "Column 1" });
        return new JTable(model);
    }
}

このソリューションを使用すると、ItemListener 内の JComboBox の行にアクセスでき、必要に応じて同じ行内の他の列から情報を更新または取得できます。

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

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