有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从jtable获取对象的正确方法

对所有人来说都是美好的一天; 我让表模型扩展AbstractTableModel,将对象添加到jtable,它很好用 并使用此代码从表中获取对象

        ListSelectionModel rowSM1 = carTable.getSelectionModel();
    rowSM1.addListSelectionListener(new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e) {
            if (e.getValueIsAdjusting())
                return;
            if (carTable.getSelectedRow() < 0) {
                try {
                    throw new Exception();
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            } else {
                editMI.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.print(new CarTableModel(carsList).getCar(carTable.getSelectedRow())+"\n");
                    }
                });

            }
        }

    });

和它的工作,并给我所选行的对象 但当选择其他行时,给我他对象并根据选择重复它 如果第二个选择重复两次如果第三个选择重复3次 像下一个:

第一选择

Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2, 

第二选择

Car{id=3, carLicense=CarLicense{id=3, human=Human{id=2,
Car{id=3, carLicense=CarLicense{id=3, human=Human{id=2,

第三选择

Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,
Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,
Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,

第四选择

Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,

等等 请解决任何问题


共 (1) 个答案

  1. # 1 楼答案

    每次从表中选择一行时,都会添加一个新的ActionListener。 这就是为什么你会得到重复的输出

    我看不到你的很多代码,但我认为控制列表选择的所有东西都是多余的。 操作事件在“editMI”组件本身内触发

    因此,只要有:

                   editMI.addActionListener(new ActionListener() {
    
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            System.out.print(new CarTableModel(carsList).getCar(carTable.getSelectedRow())+"\n");
                        }
                    });
    

    独立于表的选择事件