Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable渲染布尔值为JToggleButton_Java_Swing_Jtable_Jcheckbox_Jtogglebutton - Fatal编程技术网

Java JTable渲染布尔值为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

您好,我可以将布尔列渲染为JToggleButton,但是如果我一直按下按钮,我看到的是复选框而不是按钮

 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);
        }
    }