gpt4 book ai didi

java - 我可以将 RowFilter 与 JTable 一起使用来过滤大于或小于 double 类型的列吗?

转载 作者:行者123 更新时间:2023-12-01 12:54:54 25 4
gpt4 key购买 nike

我有一个包含一些数据的JTable,列如下:

  • 市场 - 字符串
  • 货币 - 字符串
  • 音量 - 双
  • 高 - 双
  • 低 - 双

我为每个字段都有一个文本字段,当您单击按钮时,它应该过滤表格。我让它与市场和货币字符串一起使用:

RowFilter.regexFilter(txtMarket.getText(), 0);
RowFilter.regexFilter(txtCurrency.getText(), 1);

我想使用类似的东西来过滤大于或小于音量、高和低。这可能吗还是我应该尝试其他方法?

抱歉,这是我第一次提出问题,对于任何丢失的信息或格式问题,我深表歉意。

最佳答案

在这里您可以找到有关大于行过滤器 https://docs.oracle.com/javase/7/docs/api/javax/swing/RowFilter.html 的信息此示例向您展示如何使用整数来实现此目的。

示例:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;

public class example extends JPanel {
private String[] columnNames = { "Volume"
};

private Object[][] data = { {new Integer(5)},
{new Integer(1)},
{new Integer(2)},
{new Integer(3)},
{new Integer(5)},
{new Integer(5)},
{new Integer(7)} };

private DefaultTableModel myModel = new DefaultTableModel(data, columnNames);
private JTable table = new JTable(myModel);
private JScrollPane scrollPane = new JScrollPane(table);
private TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(myModel);
private JButton button;
private JButton button2;
private JTextField filterText;



RowFilter<DefaultTableModel, Integer> GreaterThan = new RowFilter<DefaultTableModel, Integer>() {
public boolean include(Entry<? extends DefaultTableModel, ? extends Integer> entry) {
myModel = entry.getModel();

//0 is the first column
if ((int) table.getValueAt(entry.getIdentifier(), 0) > Integer.parseInt(filterText.getText())) {
return true;
}
return false;
}
};

RowFilter<DefaultTableModel, Integer> LessThan = new RowFilter<DefaultTableModel, Integer>() {
public boolean include(Entry<? extends DefaultTableModel, ? extends Integer> entry) {
myModel = entry.getModel();

//0 is the first column
if ((int) table.getValueAt(entry.getIdentifier(), 0) < Integer.parseInt(filterText.getText())) {
return true;
}
return false;
}
};


public example() {
filterText = new JTextField();
button = new JButton("Click to sort Greater Than");
button2 = new JButton("Click to sort Less Than");
add(button);
add(button2);
add(scrollPane);
table.setRowSorter(sorter);

button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
sorter.setRowFilter(GreaterThan);
}
});

button2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
sorter.setRowFilter(LessThan);
}
});


}
}

关于java - 我可以将 RowFilter 与 JTable 一起使用来过滤大于或小于 double 类型的列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978767/

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