当前位置: 首页 > 知识库问答 >
问题:

jtable复选框选中行从表中删除时单击按钮?

微生永春
2023-03-14

下面的代码是我的按钮操作的一部分。Jtable contain last row is复选框。单击“保存”按钮时,所选行必须从表行中删除

执行的操作代码

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnSave){
    for (int i = 0; i < retunTable.getRowCount(); i++) {
        Boolean chked = Boolean.valueOf(retunTable.getValueAt(i, 4)
                .toString());
        String dataCol1 = retunTable.getValueAt(i, 1).toString();
        if (chked) {


            JOptionPane.showMessageDialog(null, dataCol1);
            colVaules.add(dataCol1);
            returnBook();
            DefaultTableModel dm=(DefaultTableModel) retunTable.getModel();


        }
    }
}

}

共有1个答案

宁卓
2023-03-14

试试这个。您的类应该已经覆盖了模型的getColumnClass(),因此不需要您尝试执行的操作。getValueAt()应该返回一个可强制转换的布尔对象。此外,如果要循环并在循环中动态删除行,则需要考虑到模型的行数将随着行的每次删除而减少,因此每次删除行时也需要减少。请参见下面的示例。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class TestCheckedTable {

    public TestCheckedTable() {
        String[] cols = {"col 1", "col 2", "col 3"};
        Object[][] data = new Object[15][];
        for (int i = 0; i < data.length; i++) {
            data[i] = new Object[]{"Hello", "World", false};
        }

        final DefaultTableModel model = new DefaultTableModel(data, cols) {
            @Override
            public Class<?> getColumnClass(int col) {
                return col == 2 ? Boolean.class : String.class;
            }
        };
        JTable table = new JTable(model);

        JButton button = new JButton("Delete Checked Rows");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < model.getRowCount(); i++) {
                    Boolean checked = (Boolean) model.getValueAt(i, 2);
                    if (checked) {
                        model.removeRow(i);
                        i--;
                    }
                }
            }
        });

        JFrame frame = new JFrame("test");
        frame.add(new JScrollPane(table));
        frame.add(button, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TestCheckedTable();
            }

        });
    }
}
 类似资料:
  • 我想从java中的表中删除选定的行。该事件应在单击按钮时执行。如果有人帮助我,我会非常感激。。。 例如,有一个名为sub\U table的表,有3列,即sub\U id、sub\U name、class。当我从该表中选择一行并单击“删除”按钮时,应删除该特定行。。

  • 在这里,表的id是从删除按钮传递的。但我无法从数据库和表中删除该记录。代码如下:

  • 当我第一次点击它的时候,它点击了,但是没有关掉... 我试过这个,它检查和取消检查,但只有一次。 这个对我也不起作用。 null null

  • 我目前有以下情况: 我有多个复选框,一旦单击任何复选框,它的值将添加到数组中。如果未选中该复选框,则需要再次将该项从数组中删除。 以下操作有效,并将它们添加到我的中。但当再次选中该复选框时,它不会被删除。当然,我可以使用

  • 我有一个复选框,其中有一对项目,当我单击该复选框时,该项目将添加到名为currentDevice的状态,但当我取消选中该项目时,它将保留“添加项目”,而不是删除它。 当我取消选中该框时,如何从状态中删除项。Im使用“反应本机元素”复选框。谢谢你 代码: