JTable合并单元格例子
时间: 2023-07-22 10:57:09 浏览: 188
JTable合并单元格
5星 · 资源好评率100%
以下是一个简单的示例代码,演示如何在JTable中合并单元格:
```java
import javax.swing.*;
import javax.swing.table.*;
public class MergeCellsExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Merge Cells Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object[][] data = {
{ "1", "John", "Doe", "Male" },
{ "2", "Jane", "Smith", "Female" },
{ "3", "Bob", "Johnson", "Male" },
{ "4", "Alice", "Williams", "Female" }
};
String[] columnNames = { "ID", "First Name", "Last Name", "Gender" };
DefaultTableModel model = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
return false; // 禁止编辑单元格
}
};
JTable table = new JTable(model);
table.setRowHeight(30); // 设置行高
// 合并单元格
mergeCells(table, 0, 1, 1); // 合并第一行的第一、二列
mergeCells(table, 2, 3, 0); // 合并第三行的第一、二列
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
// 合并单元格的方法
private static void mergeCells(JTable table, int rowFrom, int rowTo, int column) {
TableCellRenderer renderer = table.getCellRenderer(rowFrom, column);
Object value = table.getValueAt(rowFrom, column);
for (int i = rowFrom; i <= rowTo; i++) {
table.setValueAt(value, i, column);
table.getColumnModel().getColumn(column).setCellRenderer(renderer);
}
}
}
```
在这个例子中,我们创建了一个包含ID、姓名、姓氏和性别的JTable。然后,使用`mergeCells`方法合并了第一行的第一、二列以及第三行的第一、二列。
注意,在实际应用中,您可能需要根据特定的条件来确定要合并的单元格。这个例子只是一个基本示例,您可以根据自己的需求进行调整。
希望这个例子对您有帮助!如果您有任何其他问题,请随时提问。
阅读全文