gpt4 book ai didi

java - 绑定(bind)两个 JComboBox 过滤器

转载 作者:行者123 更新时间:2023-11-30 02:56:01 25 4
gpt4 key购买 nike

我有两个组合框,每个组合框过滤 JTable 的不同行,我想要做的是在每个用户选择上维护我的过滤器,

示例:

此刻

第一个组合框选择选项 A,并且表格经过筛选仅显示选项 A

第二个组合框选择选项 B,并且表格被过滤仅显示选项 B

我需要的是:

第一个组合框选择选项 A,并过滤表以显示选项 A 的匹配案例

然后

第二个组合框选择选项 B,表格必须显示第一个组合框和第二个组合框显示选项“A + B”的匹配大小写的值

这是我的组合框代码,用于单独过滤表格:

comboBox.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {
RowFilter<DefaultTableModel, Object> rf = RowFilter.regexFilter(comboBox.getSelectedItem().toString(), 2);
sorter.setRowFilter(rf);
}
});

comboBox_1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {
RowFilter<DefaultTableModel, Object> rf = RowFilter.regexFilter(comboBox_1.getSelectedItem().toString(), 3);
sorter.setRowFilter(rf);
}
});

那么有没有一种方法可以在选择一个选项时始终匹配两个组合框中的大小写?

最佳答案

使用RowFilter.andFilter()允许使用 AND 逻辑将多个过滤器应用于单个 JTable(仅当两个过滤器都为 true 时,该项目才会显示)(还有一个 ,...)。

还没有测试过,但我想这样的东西可以工作:

// Collection of filters to be applied to your table
List<RowFilter<DefaultTableModel, Object>> filters = new ArrayList<>();

comboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(filters.isEmpty())
filters.add(RowFilter.regexFilter(comboBox.getSelectedItem().toString(), 2));
else
filters.set(0, RowFilter.regexFilter(comboBox.getSelectedItem().toString(), 2));
// Apply filters
sorter.setRowFilter(RowFilter.andFilter(filters));
}
});

comboBox_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(filters.size() < 2)
filters.add(RowFilter.regexFilter(comboBox_1.getSelectedItem().toString(), 3));
else
filters.set(1, RowFilter.regexFilter(comboBox_1.getSelectedItem().toString(), 3));
// Apply filters
sorter.setRowFilter(RowFilter.andFilter(filters));
}
});

关于java - 绑定(bind)两个 JComboBox 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37192797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com