如何在jtable上设置db的切换按钮文本值

时间:2014-02-18 06:18:16

标签: java swing jtable tablecelleditor jtogglebutton

如何在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);
        }    
    }
}

此处图像显示切换但不显示文字。

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

enter image description here

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

1 个答案:

答案 0 :(得分: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() ...