如何在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);
}
}
}
此处图像显示切换但不显示文字。
当我单击文本显示的按钮然后单击下一个按钮时,第一个按钮不可见。
如果你知道答案,请在这里分享.. 关于......
答案 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()
...