我有一个带复选框的JTable作为列之一.我还在标题中有一个复选框来检查/取消选中所有.AFAIK JTable的默认行为是,如果选择新行,它将取消选择之前选择的所有行.但是我们可以通过复选框实现CTRL点击行为.保留以前选定的行.我面临的主要问题是使用复选框启用多个JTable行选择.
检查第一行然后选择第一行,如果选中第三行,则选择第三行以及第一行(已经选中并选中)
检查并选择第一行时,如果选择第三行,则取消选择先前选择的所有行,仅选择第三行.
我有一个示例代码,它模拟我希望实现与Add Another One按钮相同的方案,但有复选框选择.
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import javax.swing.event.CellEditorListener;
public class JTableRowSelectProgramatically extends JPanel {
final JTable table = new JTable(new MyTableModel());
public JTableRowSelectProgramatically() {
initializePanel();
}
private void initializePanel() {
setLayout(new BorderLayout());
setPreferredSize(new Dimension(475, 150));
table.setFillsViewportHeight(true);
JScrollPane pane = new JScrollPane(table);
JLabel label2 = new JLabel("Row: ");
final JTextField field2 = new JTextField(3);
JButton add = new JButton("Select");
table.setRowSelectionAllowed(true); …Run Code Online (Sandbox Code Playgroud)