首页 > 解决方案 > 如何根据文本字段值删除二维对象数组的行?

问题描述

我有 7 行 4 列数据的表。

我想删除不等于 jtextfield 值的行?

我创建了将旧模型替换为新模型的功能。但它不像我预期的那样工作。

 public class App extends JFrame {
   final  String columns[] = {"Symbol", "Name", "Price", "Check"};//columns

public App() {

    Object rows[][] = {
            {"A", "About", 44.36, "sad"},
            {"A", "About us", 44.36, "sad"},
            {"M", "Home", 44.36, "sad"},
            {"L", "About", 44.36, "sad"},
            {"P", "About", 44.36, "sad"},
            {"OL", "Log", 44.36, "sad"},
            {"POOP", "Log", 44.36, "sad"},

    };

    DefaultTableModel model = new DefaultTableModel(rows, columns);
    final JTable table = new JTable(model);
    JScrollPane pane = new JScrollPane(table);
    JFrame frame = new JFrame("Filter JTable");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(pane, BorderLayout.CENTER);
    JPanel panel = new JPanel(new BorderLayout());
    final JTextField filterText = new JTextField();
    panel.add(filterText, BorderLayout.CENTER);
    frame.add(panel, BorderLayout.NORTH);

    frame.setSize(800, 800);
    frame.setVisible(true);


    filterText.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            int row = table.getRowCount();
            int col = table.getColumnCount();

            String textfield = filterText.getText();
            Object[][] data= new Object[row][3];

            for(int s=0;s<row;s++)
            {
                for(int x=0;x<col;x++)
                {
                    if(table.getValueAt(s,0).toString().equals(textfield))
                    {
                        data[s][x] = table.getValueAt(s,0);
                    }

                }
            }
           filterRow(data);
        }

    });
}
    private  void filterRow(Object[][] data)
    {
        DefaultTableModel model = new DefaultTableModel(data,columns);
        final JTable table = new JTable(model);
        JScrollPane pane = new JScrollPane(table);
        JFrame frame = new JFrame("Filter JTable");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(pane, BorderLayout.CENTER);
        JPanel panel = new JPanel(new BorderLayout());
        final JTextField filterText = new JTextField();
        panel.add(filterText, BorderLayout.CENTER);
        frame.add(panel, BorderLayout.NORTH);
    }
public static void main(String args[]) {
    new App();
   }
}

例如,我想在 jtextfield 中添加 About 值,并且所有其他数据都必须从 jtable 中删除。

标签: java

解决方案


推荐阅读