1

如何在 jtable 上设置切换按钮文本值(取决于数据库)

这是代码

private class CheckBoxCellEditor extends AbstractCellEditor implements

TableCellEditor, ItemListener {
    protected JToggleButton toggle;
    private String buttonValue;

    public CheckBoxCellEditor() {
        toggle = new JToggleButton("off");
        toggle.setHorizontalAlignment(SwingConstants.CENTER);           
        toggle.addItemListener(this);
    }

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

    public Object getCellEditorValue() {    
        // System.out.println( buttonValue);    
        return buttonValue;
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            toggle.setText("On!");
            System.out.println(buttonValue);
        } else {
            toggle.setText("Off");
            System.out.println(buttonValue);
        }    
    }
}

此处图像显示了切换,但未显示文本。

当我单击按钮时,文本显示然后单击下一个按钮,第一个按钮不可见。

在此处输入图像描述

如果您知道答案,请在这里分享..关于...

4

1 回答 1

4

您忘记设置切换按钮的值,然后再从getTableCellEditorComponent

public Component getTableCellEditorComponent(JTable table,
        Object value, boolean isSelected, int row, int column) {


    buttonValue = (value == null) ? "" : value.toString();
    toggle.setText(buttonValue);


    return toggle;
}

老实说,我很好奇Boolean从列getColumnClass的表模型中返回有什么问题Return,只是让默认渲染器和编辑器处理它......

另外...当您从编辑器返回按钮值时,您会忽略它...

public Object getCellEditorValue() {

    // System.out.println( buttonValue);

    return buttonValue;
}

坦率地说,可能更好用toggle.getText()......

于 2014-02-18T06:20:49.287 回答