我有一个包含一些数据的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/