Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Добавление строк в JTable / 6 сообщений из 6, страница 1 из 1
29.11.2016, 13:38
    #39356805
progjar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
Есть модель таблицы

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public abstract class table  extends AbstractTableModel {
 private int columnCount = 4;
 private ArrayList<String[]> dataArrayList;
 
    public table () {
    dataArrayList = new ArrayList<String[]> ();
    for (int i=0; i<dataArrayList.size();i++) {
        dataArrayList.add(new String[getColumnCount()]);
     }
    }
 
 
@Override
    public int getRowCount() {
       return dataArrayList.size();
    }
    
    @Override
    public String getColumnName(int columnIndex){
        switch(columnIndex) {
            case 0: return "1";
            case 1: return "2";
            case 2: return "3";
            case 3: return "4";
        }
        return "";
    }
 
    @Override
    public int getColumnCount() {
        return columnCount;
    }
    
     @Override
    public java.lang.Object getValueAt(int rowIndex, int columnIndex) {
       String [] rows = dataArrayList.get(rowIndex);   
        return  rows [columnIndex];
    }
    public void addDate(String[] row){
        String [] rowTable = new String[getColumnCount()];
        rowTable = row;
        dataArrayList.add(rowTable);
        
    }
}



Не могу понять как сделать в основном классе добавление строки в JTable по нажатию кнопки ?
...
Рейтинг: 0 / 0
29.11.2016, 13:44
    #39356810
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
Что такое "основной класс"?
Почему класс называется table, с маленькой буквы, хотя это TableModel? table это название для переменной типа JTable.
Добавление в таблицу у вас уже реализовано в виде
Код: java
1.
  dataArrayList.add(rowTable);


где rowTable стоило бы назвать tableRow.

Для того чтобы
авторсделать в основном классе добавление строки в JTable по нажатию кнопки
нужно сделать кнопку, навесить на неё обработку события через Action или ActionListener и вызвать метод добавления строки в dataArrayList. Кстати, date, это "дата", а не "данные".

Так как у вас всё уже реализовано, то ваш вопрос должен был звучать как
"я добавляю данные в tableModel, но они не отображаются в таблице".

А чтобы ответить на этот вопрос, достаточно открыть класс AbstractTableModel и посмотреть на методы fireЧегоНибудь()
...
Рейтинг: 0 / 0
29.11.2016, 15:51
    #39356997
progjar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
Blazkowicz,
Надо это записать в Action кнопки ?
Код: java
1.
2.
3.
4.
5.
6.
public void addDate(String[] row){
        String [] rowTable = new String[getColumnCount()];
        rowTable = row;
        dataArrayList.add(rowTable);
        
    }
...
Рейтинг: 0 / 0
30.11.2016, 10:39
    #39357475
ruzja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
progjarBlazkowicz,
Надо это записать в Action кнопки ?
Код: java
1.
2.
3.
4.
5.
6.
public void addDate(String[] row){
        String [] rowTable = new String[getColumnCount()];
        rowTable = row;
        dataArrayList.add(rowTable);
        
    }



Нет. В методе идет добавление записи в модель. А представление ничего об этом не знает, поэтому не перерисовывет.
Для этого необходимо в конец метода добавить вызов метода fireTableRowsInserted(int firstRow, int lastRow).
https://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html#fireTableRowsInserted(int, int)
...
Рейтинг: 0 / 0
12.12.2016, 19:37
    #39365223
progjar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
Можно просто кодом помочь

Код: java
1.
2.
3.
4.
5.
6.
  JButton bt = new JButton ("Добавить");
bt.addActionListener(new  ActionListener(){
            @Override
            public void actionPerformed(ActionEvent event) {
//Что тут должно быть ?
}
...
Рейтинг: 0 / 0
13.12.2016, 10:58
    #39365531
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в JTable
progjarМожно просто кодом помочь, бездельнику?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
JButton btn = new JButton ("Добавить");
btn.addActionListener(new  ActionListener(){
            @Override
            public void actionPerformed(ActionEvent event) {
                MyTableModel model = (MyTableModel)myTable.getModel();
                model.addRow("Cell 1", 'Cell 2", "Cell 3");
            }
}

class MyTableModel extends AbstractTableModel {

    public void addRow(String ... row) {
        int rowNum = dataArrayList.size();
        dataArrayList.add(row);
        fireTableRowsInserted(rowNum, rowNum)
    }
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Добавление строк в JTable / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]