首页 > Java > java教程 > 如何确定包含触发 ItemEvent 的 JComboBox 的 JTable 行?

如何确定包含触发 ItemEvent 的 JComboBox 的 JTable 行?

Patricia Arquette
发布: 2024-12-17 16:04:14
原创
663 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板