Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 表标题中的Jcheckbox给出了一个异常_Java_Swing_Jtable_Jcheckbox - Fatal编程技术网

Java 表标题中的Jcheckbox给出了一个异常

Java 表标题中的Jcheckbox给出了一个异常,java,swing,jtable,jcheckbox,Java,Swing,Jtable,Jcheckbox,我已经创建了一个JTable。有一个名为“导出”的列标题,带有一个复选框。当我们选中标题的复选框时,所有行中的复选框也应该被选中 这是我的密码: private void initializeTable() { tableModel = (DefaultTableModel) locationJTable.getModel(); locationJTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); t

我已经创建了一个
JTable
。有一个名为“导出”的列标题,带有一个复选框。当我们选中标题的复选框时,所有行中的复选框也应该被选中

这是我的密码:

private void initializeTable() {
    tableModel = (DefaultTableModel) locationJTable.getModel();

    locationJTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tableModelListener = new TableModelListener() {
        @Override
        public void tableChanged(TableModelEvent e) {
            processTableChange(e);
        }
    };
    locationJTable.getModel().addTableModelListener(tableModelListener);

    tableSelectionListener = new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e) {
            //processSelection(e);
        }
    };
    locationJTable.getSelectionModel().addListSelectionListener(tableSelectionListener);

    Map<String, TableColumn> columns = new HashMap<String, TableColumn>() {
        {
            put("Export", locationJTable.getColumnModel().getColumn(INDEX_OF_THE_EXPORT_COLUMN));
        }
    };

    for (Map.Entry<String, TableColumn> entry : columns.entrySet()) {
        TableColumn column = entry.getValue();
        ItemListener itemListener = (ItemEvent e)
                -> {
            Object source = e.getSource();
            if (source instanceof AbstractButton == false) {
                return;
            }

            boolean checked = e.getStateChange() == ItemEvent.SELECTED;
            for (int x1 = 0, y1 = locationJTable.getRowCount(); x1 < y1; x1++) {
                **if ((boolean) locationJTable.getValueAt(x1, column.getModelIndex()) != checked)** {
                    locationJTable.setValueAt(checked, x1, column.getModelIndex());
                }
            }
        };

        boolean selected = true;
        if (entry.getKey().equals("Export")) {
            selected = false;
        }

        CheckBoxHeader header = new CheckBoxHeader(itemListener, selected, entry.getKey(), column.getModelIndex());
        locationJTable.getTableHeader().setBackground(new Color(255, 255, 255));
        column.setHeaderRenderer(header);
        checkBoxHeaders.put(header, itemListener);
    }
}
private void initializeTable(){
tableModel=(DefaultTableModel)locationJTable.getModel();
locationJTable.setSelectionMode(ListSelectionModel.SINGLE_选择);
tableModelListener=新的tableModelListener(){
@凌驾
公共作废表已更改(TableModelEvent e){
可处理的变更(e);
}
};
locationJTable.getModel().addTableModelListener(tableModelListener);
tableSelectionListener=新建ListSelectionListener(){
@凌驾
public void值已更改(ListSelectionEvent e){
//工艺选择(e);
}
};
locationJTable.getSelectionModel().addListSelectionListener(tableSelectionListener);
Map columns=newhashmap(){
{
put(“导出”,locationJTable.getColumnModel().getColumn(导出列的索引));
}
};
对于(Map.Entry:columns.entrySet()){
TableColumn column=entry.getValue();
ItemListener ItemListener=(ItemEvent e)
-> {
对象源=e.getSource();
if(抽象按钮的源实例==false){
返回;
}
选中布尔值=e.getStateChange()==ItemEvent.SELECTED;
对于(int-x1=0,y1=locationJTable.getRowCount();x1
我在构造函数中调用这个函数。当我勾选标题中的复选框而不是勾选其他复选框时,它会显示
NullPointerException
。但是,如果我先勾选一行中的复选框,然后勾选表头复选框,它会按预期选中表行中的所有其他复选框<代码>locationJTable.getValueAt(x1,column.getModelIndex()
在异常发生时进行调试时显示
null


为什么?

1)“显示以下异常”。。什么例外?始终复制/粘贴错误和异常输出!2) 为了更快地获得更好的帮助,请发布一个or。为什么要删除异常屏幕截图?这有助于读者更好地理解问题。当您发布mcve(包括测试数据)和完整的异常错误消息时,不要忘记标记导致异常的行。