[英]Can I use RowFilter with a JTable to filter greater than or less than a column with type double?
我有一個包含一些數據的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);
}
});
}
}
我使用以下方法使用市場和貨幣字符串:
然后查看RowFilter
API:
RowFilter.numberFilter(...)
方法創建兩個過濾器,一個用於“大於”,另一個用於“小於”。 RowFilter.and(...)
方法創建可以在表上使用的過濾器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.