简体   繁体   English

jTable中无法单击jButton

[英]jButton not clickable in jTable

I got the problem, that I cannot click on buttons. 我遇到问题,无法单击按钮。 They behave like they are just textfields with the design of buttons. 它们的行为就像只是按钮设计的文本字段。

my Main : 我的Main

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

my CellRenderer : 我的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;
    }
}

my CellEditor : 我的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;
    }
}

Can you find the issue with that? 您能找到问题所在吗? It drives my crazy... 它让我发疯...

Thanks so much :) 非常感谢 :)

Check out Table Button Column . 签出表格按钮列

It combines a button renderer and editor in a single class. 它在单个类中组合了按钮渲染器和编辑器。

All you need to do is provide the custom Action to be invoked when you invoke the button (either by clicking on it or by invoking its mnemonic). 您需要做的就是提供在调用按钮时(通过单击它或通过调用它的助记符)调用的自定义Action

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM