Rumah > Java > javaTutorial > Bagaimana untuk Menentukan Baris JTable yang Mengandungi JComboBox yang Mencetuskan ItemEvent?

Bagaimana untuk Menentukan Baris JTable yang Mengandungi JComboBox yang Mencetuskan ItemEvent?

Patricia Arquette
Lepaskan: 2024-12-17 16:04:14
asal
664 orang telah melayarinya

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

Menentukan Baris Berkaitan dengan Sel JComboBox dalam JTable

Soalan Awal:

Anda berhasrat untuk memastikan baris nombor dalam JTable yang mengandungi JComboBox dalam sel tertentu apabila ItemEvent dicetuskan dalam JComboBox. Nombor baris ini penting untuk tindakan seterusnya yang melibatkan sel lain dalam baris yang sama selepas pengubahsuaian JComboBox.

Respons:

Nampaknya anda menggunakan JComboBox sebagai editor dalam JTable. Dalam senario sedemikian, kaedah getTableCellEditorComponent() kelas TableCellEditor menyediakan akses kepada baris sebagai salah satu parameternya. Rujuk sumber berikut untuk mendapatkan maklumat lanjut:

  • Tutorial Java: Menggunakan Kotak Kombo sebagai Editor
  • Contoh: Menyesuaikan Editor ComboBox

Tambahan untuk Penyegerakan Nilai:

Untuk menyegerakkan nilai daripada lajur bergantung dengan lajur JComboBox, ganti kaedah getValueAt() model jadual. Ini membolehkan anda mengembalikan nilai yang dikemas kini berdasarkan kandungan diubah lajur JComboBox.

Contoh Tambahan:

Kod di bawah mempamerkan pendekatan ini, mengekalkan lajur bergantung disegerakkan dengan lajur JComboBox menggunakan kaedah getValueAt() yang diganti:

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);
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Baris JTable yang Mengandungi JComboBox yang Mencetuskan ItemEvent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan