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