首頁 > Java > java教程 > 如何確定包含觸發 ItemEvent 的 JComboBox 的 JTable 行?

如何確定包含觸發 ItemEvent 的 JComboBox 的 JTable 行?

Patricia Arquette
發布: 2024-12-17 16:04:14
原創
646 人瀏覽過

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

確定與JTable 中的JComboBox 單元格關聯的行

初始問題:

您的目標是確定該行當在特定儲存格中觸發ItemEvent 時,JTable 中包含JComboBox 的編號JComboBox。此行號對於 JComboBox 修改後涉及同一行中的另一個儲存格的後續操作至關重要。

回應:

看來您正在使用 JComboBox 作為JTable 中的編輯器。在這種情況下,TableCellEditor 類別的 getTableCellEditorComponent() 方法提供對行的存取作為其參數之一。請參閱以下資源以取得更多見解:

  • 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板