把combobox下拉选项显示成一个表格

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java GUI中,可以使用JComboBox组件作为下拉菜单栏,并使用RowFilter类来实现表格的筛选器。以下是一个简单的示例代码: ```java import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableRowSorter; import java.awt.*; import java.util.ArrayList; public class TableFilterExample extends JFrame { private JTable table1; private JTable table2; public TableFilterExample() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 500); // 创建表格数据 String[] columns = {"Name", "Age"}; Object[][] data = {{"John", 30}, {"Jane", 25}, {"Bob", 35}, {"Alice", 27}}; DefaultTableModel model1 = new DefaultTableModel(data, columns); DefaultTableModel model2 = new DefaultTableModel(data, columns); // 创建表格并设置数据模型 table1 = new JTable(model1); table2 = new JTable(model2); // 创建下拉菜单栏 JComboBox<String> comboBox1 = new JComboBox<>(columns); JComboBox<String> comboBox2 = new JComboBox<>(columns); // 创建表格排序器 TableRowSorter<DefaultTableModel> sorter1 = new TableRowSorter<>(model1); TableRowSorter<DefaultTableModel> sorter2 = new TableRowSorter<>(model2); table1.setRowSorter(sorter1); table2.setRowSorter(sorter2); // 设置下拉菜单栏的监听器,当选择不同的选项时,更新表格的筛选器 comboBox1.addActionListener(e -> { String selectedColumn = comboBox1.getSelectedItem().toString(); ArrayList<RowFilter<Object, Object>> filters = new ArrayList<>(); filters.add(RowFilter.notFilter(RowFilter.regexFilter("^$"))); filters.add(RowFilter.regexFilter("(?i)" + selectedColumn)); sorter1.setRowFilter(RowFilter.andFilter(filters)); }); comboBox2.addActionListener(e -> { String selectedColumn = comboBox2.getSelectedItem().toString(); ArrayList<RowFilter<Object, Object>> filters = new ArrayList<>(); filters.add(RowFilter.notFilter(RowFilter.regexFilter("^$"))); filters.add(RowFilter.regexFilter("(?i)" + selectedColumn)); sorter2.setRowFilter(RowFilter.andFilter(filters)); }); // 创建面板并将表格下拉菜单栏添加到面板中 JPanel panel = new JPanel(new GridLayout(2, 2)); panel.add(new JScrollPane(table1)); panel.add(comboBox1); panel.add(new JScrollPane(table2)); panel.add(comboBox2); add(panel); setVisible(true); } public static void main(String[] args) { new TableFilterExample(); } } ``` 在上面的示例中,我们创建了两个表格和两个下拉菜单栏,每个下拉菜单栏都包含表格中的列名。当选择不同的列名时,我们使用RowFilter类创建一个筛选器,并将其应用于相应的表格的排序器中。这样,选择下拉菜单栏中的选项将筛选出具有所选列的值的行,并将其显示表格中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值