Java JTable渲染布尔值为JToggleButton
您好,我可以将布尔列渲染为JToggleButton,但是如果我一直按下按钮,我看到的是复选框而不是按钮Java JTable渲染布尔值为JToggleButton,java,swing,jtable,jcheckbox,jtogglebutton,Java,Swing,Jtable,Jcheckbox,Jtogglebutton,您好,我可以将布尔列渲染为JToggleButton,但是如果我一直按下按钮,我看到的是复选框而不是按钮 TableColumnModel tcm = smartAlertsTable.getColumnModel(); TableColumn tc = tcm.getColumn( Index of the boolean column); tc.setCellRenderer(new ActiveAlertRenderer()); ActiveAlertRenderer在哪里 pub
TableColumnModel tcm = smartAlertsTable.getColumnModel();
TableColumn tc = tcm.getColumn( Index of the boolean column);
tc.setCellRenderer(new ActiveAlertRenderer());
ActiveAlertRenderer在哪里
public class ActiveAlertRenderer extends JToggleButton implements
TableCellRenderer
{
}
如何防止复选框出现?
JTable
使用复选框作为布尔列的默认呈现器和编辑器。您提供了自己的渲染器,但编辑器仍然是默认的。这是编辑单元格时看到的复选框。您必须以与渲染器类似的方式提供自定义编辑器(TableCellEditor的实现)。您可以使用JTable.setDefaultEditor()
或TableColumn.setCellRenderer
进行设置
有关详细信息,请参见“如何使用表”教程中的 试着这样做:
public class ActiveAlertRenderer extends DefaultTableRenderer {
private JToggleButton toggleButton = new JToggleButton();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (column==INDEX_OF_TOGGLE_BUTTON_COLUMN) {
boolean active = (Boolean) argValue;
if (active) {
toggleButton.setText("Armed");
} else {
toggleButton.setText("Triggered");
}
toggleButton.setSelected(active);
return toggleButton;
}
else {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
}
public class ActiveAlertRenderer extends DefaultTableRenderer {
private JToggleButton toggleButton = new JToggleButton();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (column==INDEX_OF_TOGGLE_BUTTON_COLUMN) {
boolean active = (Boolean) argValue;
if (active) {
toggleButton.setText("Armed");
} else {
toggleButton.setText("Triggered");
}
toggleButton.setSelected(active);
return toggleButton;
}
else {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}