java,gui,现在弹窗中有一个表格,两个下拉菜单栏。例如,表格第一列记录了学生的性别,第二列为年龄。第一行为“zhang”,28。第二列为“wang”,19。第三列为“zhang”,19,第四列为“wang”,28。则第一个菜单栏为性别,下拉选项有“zhang”,“wang”,第二个菜单栏叫年龄,下拉选项为19,28。通过下拉菜单栏可以实现筛选表格的功能。可以分别筛选,也可以两个菜单栏一起筛选,呈现
时间: 2023-08-12 17:03:16 浏览: 40
一个新的表格,只包含符合条件的数据行。以下是一个简单的示例代码,可以实现该功能:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class TableFilterExample extends JFrame implements ActionListener {
private String[] genders = {"zhang", "wang"};
private Integer[] ages = {19, 28};
private JComboBox<String> genderComboBox;
private JComboBox<Integer> ageComboBox;
private JTable dataTable;
public TableFilterExample() {
super("Table Filter Example");
// 创建下拉菜单栏
genderComboBox = new JComboBox<>(genders);
ageComboBox = new JComboBox<>(ages);
// 添加下拉菜单栏的监听器
genderComboBox.addActionListener(this);
ageComboBox.addActionListener(this);
// 创建表格
dataTable = new JTable();
// 创建表格模型
DefaultTableModel model = new DefaultTableModel(new Object[][]{
{"zhang", 28},
{"wang", 19},
{"zhang", 19},
{"wang", 28}
}, new String[]{"Gender", "Age"});
// 设置表格模型
dataTable.setModel(model);
dataTable.setAutoCreateRowSorter(true);
dataTable.setFillsViewportHeight(true);
// 创建面板并添加组件
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Gender:"), BorderLayout.WEST);
panel.add(genderComboBox, BorderLayout.CENTER);
panel.add(new JLabel("Age:"), BorderLayout.EAST);
panel.add(ageComboBox, BorderLayout.LINE_END);
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
// 将面板和表格添加到窗口中
add(panel, BorderLayout.NORTH);
add(new JScrollPane(dataTable), BorderLayout.CENTER);
// 设置窗口属性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 获取选择的性别和年龄
String selectedGender = (String) genderComboBox.getSelectedItem();
Integer selectedAge = (Integer) ageComboBox.getSelectedItem();
// 筛选表格数据
ArrayList<RowFilter<Object, Object>> filters = new ArrayList<>();
filters.add(RowFilter.regexFilter(selectedGender, 0));
filters.add(RowFilter.numberFilter(RowFilter.ComparisonType.EQUAL, selectedAge, 1));
RowFilter<Object, Object> filter = RowFilter.andFilter(filters);
// 应用筛选条件
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).getRowCount();
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowCount(0);
((DefaultTableModel) dataTable.getModel()).setRowCount(-1);
((DefaultTableModel) dataTable.getModel()).setRowFilter(filter);
}
public static void main(String[] args) {
new TableFilterExample();
}
}
```
需要注意的是,该示例代码中为了防止初始表格数据不足以显示滚动条的情况,添加了一些额外的行,以便在第一次筛选时正确设置表格行数。在实际使用中,可以根据数据量进行调整。