Как я могу удалить строки массива 2d объектов на основе значения текстового поля? - PullRequest
0 голосов
/ 18 сентября 2019

У меня есть таблица с 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();
   }
}

Например, я хочу добавить значение About в jtextfield, а все остальные данные необходимо удалить из jtable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...