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

标签 java swing jtable double rowfilter

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

相关文章:

java - 监听器需要什么来检测 JTable 单元格是否已被双击并因此切换到编辑模式?

java - 三维数组

java - 覆盖 Java 中的基本箭头按钮类

java - 从 JTable 中获取选定行的内容作为对象的 ArrayList

java - 如何根据选择的按钮从类中调用方法?

java - 从按钮单击事件打开另一个 JFrame

java - 将带有 JPanel 的 JToggleButton 放入 JTable 单元格中

Java - 子类构造函数中的显式 super()

java - Java 世界中有类似 WPF 和 MVVM 的东西吗?

java - 小服务程序 3 : Async - cant PUSH partial response