удаление данных в таблице в графическом интерфейсе - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть вопрос, как я могу удалить все данные из моего jTable в графическом интерфейсе, когда пользователь ввел ключ? спасибо

Ответы [ 4 ]

2 голосов
/ 14 декабря 2010

Вы должны понимать, что JTable - это представление данных, тогда как фактические данные находятся в TableModel .Если вам нужно очистить таблицу, то вам нужно очистить TableModel.

Если ваша TableModel является AbstractTableModel , вы должны предоставить реализации 3 методов:

public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);

Зачастую фактические объекты данных хранятся в дополнительной структуре данных (например, в списке), а затем AbstractTableModel запрашивает этот список.

List<DomainObject> objects = new ArrayList<DomainObject>();

public int getRowCount() { return objects.size(); }
// How many columns you make depends on what features of the objects you're exposing.
public int getColumnCount() { return NUMBER_OF_COLUMNS; }
public Object getValueAt(int row, int column) {
     DomainObject object = objects.get(row);
     ... // pull out the property based on the column they pass in
}

// By exposing this method, you can allow your Controller code to reach into this model
// and delete all the rows.
public void clear() {
    objects.clear()
}

То, что предлагает вам HH, это изменить модельВаш JTable ссылается на пустую модель, которая в действительности очистит таблицу.Однако столбцы и т. Д. Не будут сохранены правильно (новый DefaultTableModel понятия не имеет, какими будут имена этих столбцов).

После того, как вы выяснили, как вид и модель больше соответствуют друг другу, взгляните на GlazedLists .Это дает очень мощный способ создания TableModels, которые обеспечивают динамическое представление ваших данных, например, путем фильтрации строк, которые не соответствуют определенным критериям.

Подводя итог - вы не найдете метода вJTable, чтобы очистить его содержимое, потому что это работа TableModel.Вам нужен какой-то способ убедиться, что структуры данных поддержки TableModel очищены.

2 голосов
/ 14 декабря 2010

Если вы используете DefaultTableModel, вы можете просто использовать:

model.setRowCount(0);

Это лучше, чем создание новой DefaultTableModel. Создание новой TableModel вызывает воссоздание TableColumnModel, что означает, что все TableColumns будут изменены к значениям по умолчанию и воссозданы в порядке, в котором столбцы существуют в модели. Пользователь, возможно, изменил эти свойства, и его не следует заставлять делать это снова.

Если вы просто удаляете определенные строки, содержащие определенное значение, вы можете использовать метод DefaultTableModel.removeRow (...). Убедитесь, что вы начали с удаления строки с конца модели и отсчитали до 0.

2 голосов
/ 14 декабря 2010

Вы можете установить новую пустую модель данных:

TableModel newModel = new DefaultTableModel();
jtable.setModel(newModel);
0 голосов
/ 29 июля 2014

вызов removeAll из j_table метода в addActionListener

button1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
        j_table.removeAll();
        data_model_table.setRowCount(0);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...