java,gui,如何通过下拉菜单栏实现表格筛选,展示详细代码并*加注释
时间: 2023-08-15 12:04:50 浏览: 153
以下是一个简单的Java GUI程序,使用了下拉菜单栏实现表格筛选的功能:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableFilterDemo extends JFrame {
private JTable table;
private TableRowSorter<TableModel> sorter;
public TableFilterDemo() {
// 创建表格模型
DefaultTableModel model = new DefaultTableModel(0, 0);
String[] header = {"姓名", "性别", "年龄"};
model.setColumnIdentifiers(header);
// 添加数据到表格模型中
model.addRow(new Object[]{"张三", "男", 20});
model.addRow(new Object[]{"李四", "女", 22});
model.addRow(new Object[]{"王五", "男", 25});
model.addRow(new Object[]{"赵六", "女", 28});
// 创建表格并设置表格模型
table = new JTable(model);
// 创建下拉菜单栏并添加选项
JComboBox<String> comboBox = new JComboBox<>(header);
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取下拉菜单栏选中的选项
String selectedColumn = (String) comboBox.getSelectedItem();
// 根据选项设置表格筛选器
if (selectedColumn != null) {
sorter.setRowFilter(RowFilter.regexFilter("(?i)" + selectedColumn));
}
}
});
// 将表格添加到滚动面板中
JScrollPane scrollPane = new JScrollPane(table);
// 获取表格的行排序器
sorter = new TableRowSorter<>(table.getModel());
table.setRowSorter(sorter);
// 创建面板并将下拉菜单栏和滚动面板添加到面板中
JPanel panel = new JPanel(new BorderLayout());
panel.add(comboBox, BorderLayout.NORTH);
panel.add(scrollPane, BorderLayout.CENTER);
// 将面板添加到窗口中
getContentPane().add(panel);
// 设置窗口大小并显示窗口
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
new TableFilterDemo();
}
}
```
代码注释:
1. 创建表格模型
```java
DefaultTableModel model = new DefaultTableModel(0, 0);
String[] header = {"姓名", "性别", "年龄"};
model.setColumnIdentifiers(header);
```
创建一个默认的表格模型,并设置表格的列头为“姓名”、“性别”和“年龄”。
2. 添加数据到表格模型中
```java
model.addRow(new Object[]{"张三", "男", 20});
model.addRow(new Object[]{"李四", "女", 22});
model.addRow(new Object[]{"王五", "男", 25});
model.addRow(new Object[]{"赵六", "女", 28});
```
向表格模型中添加数据。
3. 创建表格并设置表格模型
```java
table = new JTable(model);
```
创建一个表格,并设置表格模型为上一步创建的表格模型。
4. 创建下拉菜单栏并添加选项
```java
JComboBox<String> comboBox = new JComboBox<>(header);
```
创建一个下拉菜单栏,并将选项设置为“姓名”、“性别”和“年龄”。
5. 创建表格的行排序器
```java
sorter = new TableRowSorter<>(table.getModel());
table.setRowSorter(sorter);
```
创建一个表格的行排序器,并将其设置为表格的行排序器。
6. 根据选项设置表格筛选器
```java
String selectedColumn = (String) comboBox.getSelectedItem();
if (selectedColumn != null) {
sorter.setRowFilter(RowFilter.regexFilter("(?i)" + selectedColumn));
}
```
根据下拉菜单栏选中的选项,设置表格的筛选器,使得表格只显示符合条件的行。
7. 将面板添加到窗口中
```java
JPanel panel = new JPanel(new BorderLayout());
panel.add(comboBox, BorderLayout.NORTH);
panel.add(scrollPane, BorderLayout.CENTER);
getContentPane().add(panel);
```
创建一个面板,并将下拉菜单栏和滚动面板添加到面板中,最后将面板添加到窗口中。
8. 设置窗口大小并显示窗口
```java
setSize(400, 300);
setVisible(true);
```
设置窗口的大小并显示窗口。
阅读全文