java - 了解如何将 JButton 添加到 JTable

标签 java swing jtable jbutton

我正在尝试在 JTable 中实现一些按钮。我一直在看 this example .

我不明白的是这个构造函数:

public ButtonEditor(JCheckBox checkBox) {
    super(checkBox);
    button = new JButton();
    button.setOpaque(true);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        fireEditingStopped();
      }
    });
}

JCheckBox 有什么关系?任何地方都没有显示 JCheckBox,它似乎也与示例无关。 TIA。

最佳答案

此处的 DefaultCellEditor 用法更多的是使用按钮的 hack,因为它仅接受 JCheckBoxJComboBoxJTextField.

如果你真的想实现JButton,你也可以这样做,

class ButtonEditor extends AbstractCellEditor 
 implements javax.swing.table.TableCellEditor, 
            javax.swing.tree.TreeCellEditor

此外,您可以更新您的实现,以使用带有 JButton 作为参数或默认构造函数的构造函数,

方法 1

public ButtonEditor() {
    super(new JCheckBox());
    button = new JButton();
    button.setOpaque(true);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        fireEditingStopped();
      }
    });
  }

并且可以通过以下方式访问:

table.getColumn("Button").setCellEditor(
        new ButtonEditor());

方法 2

public ButtonEditor(JButton button) {
    super(new JCheckBox());
    this.button = button;
    button.setOpaque(true);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        fireEditingStopped();
      }
    });
  }

这种方法在单元格编辑器之外也提供了更好的清晰度和按钮组件的使用,

JButton button=new JButton();
table.getColumn("Button").setCellEditor(
       new ButtonEditor(button));

关于java - 了解如何将 JButton 添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114768/

相关文章:

java - 使javafx choicebox根据键盘选择项目

java - FileWriter 对象引用未按预期被覆盖

java - 插入数据库

带键盘的 Java ListSelectionListener 接口(interface)

java - 如何创建多选组合

java - AbstractTableModel 中的空指针

java - 如何强制 jTable 不可编辑?

java - 方法引用 - 语法错误,插入 ";"以完成 BlockStatements

java - JTable 仅显示 Mysql 中的一行

java - 如何从 Android 中的信号处理函数通过 JNI 调用 Java 函数