java - jTable 中的 jButton 不可点击

标签 java swing jtable jbutton

我遇到问题,无法单击按钮。它们的行为就像只是带有按钮设计的文本字段。

我的主要:

    tableModStudents = (DefaultTableModel) studentsTable.getModel();
    studentsTable.getColumn(studentsTable.getColumnName(8))
                 .setCellRenderer(new JButtonRenderer());
    studentsTable.getColumn(studentsTable.getColumnName(8))
                 .setCellEditor(new JButtonEditor());

我的CellRenderer:

public class JButtonRenderer implements TableCellRenderer {    
    private JButton button = new JButton();

    public Component getTableCellRendererComponent(JTable table,
            Object buttonText, boolean isSelected, boolean hasFocus, 
            int row, int column) {
        table.setShowGrid(true);
        button.setText("Details");
        button.setToolTipText(buttonText.toString());
        return button;
    }
}

我的CellEditor:

    public class JButtonEditor extends AbstractCellEditor implements TableCellEditor {

    private JButton button;
    private String txt;

    public JButtonEditor() {
        super();
        button = new JButton();
        button.setOpaque(true);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                System.out.println("Button gedrückt!");
            }
        });
    }

    public Object getCellEditorValue() {
        return null;
    }

    public boolean isCellEditable(EventObject anEvent) {
        return true;
    }

    public boolean shouldSelectCell(EventObject anEvent) {
        return false;
    }

    public boolean stopCellEditing() {
        return super.stopCellEditing();
    }

    public void cancelCellEditing() {
    }

    public void addCellEditorListener(CellEditorListener l) {
    }

    public void removeCellEditorListener(CellEditorListener l) {
    }

    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        txt = (value == null) ? "" : value.toString();
        button.setText(txt);
        return button;
    }
}

你能找出问题所在吗?它让我发疯......

非常感谢:)

最佳答案

查看Table Button Column .

它将按钮渲染器和编辑器组合在一个类中。

您需要做的就是提供在调用按钮时要调用的自定义Action(通过单击它或调用其助记符)。

关于java - jTable 中的 jButton 不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438290/

相关文章:

Java 服务器通过 JSON 处理来自 iOS 的请求?

java - JGraphX 正在破坏 Swing 组件的界限

java - java中设置jtable的下一列的数据

java - AbstractTableModel 使用 TreeMap<Integer,Vector<Object> 作为支持如何实现 insertRow()

java - 从前一个 Controller 重定向时未调用 Post 方法

java - 在 mongodb 文档中查找字段

java - 修改 Javassist 代理命名策略

java - 为什么我运行时框架是空的?

Java Swing 布局和菜单

java - 使用 ArrayList 创建 jTable