1. 首页
  2. 技术文章
  3. java

JTables多行编辑功能实现方法

JTable是Swing库中的一个组件,用于显示和编辑数据表格。但是,默认情况下,JTable只允许单元格内的数据进行编辑,而不支持多行编辑。本文将介绍如何实现JTable的多行编辑功能。 要实现JTable的多行编辑,我们需要自定义一个TableCellEditor类。TableCellEditor是Swing中用于编辑表格单元格的接口。我们可以通过实现该接口,并重写其中的方法来实现我们想要的功能。 以下是实现JTable多行编辑的代码示例: import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MultiRowEditDemo extends JFrame { private JTable table; private DefaultTableModel model; public MultiRowEditDemo() { setTitle("JTable多行编辑示例"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); setLocationRelativeTo(null); // 创建表格模型 model = new DefaultTableModel(new Object[]{"姓名", "年龄"}, 0); // 创建表格,并设置单元格编辑器 table = new JTable(model) { @Override public TableCellEditor getCellEditor(int row, int column) { int modelColumn = convertColumnIndexToModel(column); if (modelColumn == 1) { return new DefaultCellEditor(new JTextField()); } else { return super.getCellEditor(row, column); } } }; // 设置表格为可编辑模式 table.setSurrendersFocusOnKeystroke(true); table.putClientProperty("terminateEditOnFocusLost", true); // 添加按钮用于添加新行 JButton addButton = new JButton("添加新行"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.addRow(new Object[]{"", ""}); } }); // 创建一个滚动面板,用于显示表格 JScrollPane scrollPane = new JScrollPane(table); // 将按钮和表格添加到窗口中 getContentPane().setLayout(new BorderLayout()); getContentPane().add(addButton, BorderLayout.NORTH); getContentPane().add(scrollPane, BorderLayout.CENTER); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new MultiRowEditDemo().setVisible(true); } }); } } 在上述代码中,我们创建了一个继承自JFrame的类MultiRowEditDemo。在构造函数中,我们首先创建了一个DefaultTableModel实例,作为JTable的数据模型。然后,我们创建了一个JTable实例,并重写了它的getCellEditor方法,使其在第二列可编辑时返回一个文本框的编辑器。接下来,我们设置了一些JTable的参数,包括允许在单元格编辑时获取焦点,并在失去焦点时自动终止编辑。最后,我们添加了一个按钮,用于添加新的行,并将按钮和表格添加到主窗口中。 通过运行上述代码,您可以在界面中看到一个JTable,按钮的点击事件将会添加一个新的空白行供您编辑。您可以在第二列的单元格中输入任意文本。 希望这篇文章对您有所帮助,祝您编程愉快!
Read in English