Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 15

Не могу записать в JTable данные

24.12.2012, 23:37. Показов 2376. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Возникла такая проблема. Нужно записать в таблицу два массива. Почитав на форумах о 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
final String [] colHeaders = {"x1","x2","i"};
        TableModel hookeModel = new AbstractTableModel()                 //setting Hooke-Jeeves' table model
        {
            Object [][]data= new Object[A.x1.size()][colHeaders.length];
            @Override
            public int getColumnCount()
            {
                return colHeaders.length;  
            }
 
            @Override
            public int getRowCount()
            {
                return A.x1.size(); 
            }
 
            @Override
            public Object getValueAt(int rowIndex, int columnIndex)
            {
                return null;  
            }
 
            @Override
            public String getColumnName(int column)
            {
                return colHeaders[column];
            }
            @Override
            public boolean isCellEditable(int row, int col)
            {
                return false;
            }
            public void setValueAt(Object val, int row, int col)
            {
                data[row][col]=val;
                fireTableDataChanged();
            }
        };
        hookeTable.setModel(hookeModel);
        for(int i=0;i<A.x1.size();i++)
        {
            hookeTable.setValueAt(Double.toString(A.x1.get(i)),i,0);
            hookeTable.setValueAt(Double.toString(A.x2.get(i)),i,1);
            hookeTable.setValueAt(Double.toString(i),i,2);
        }
это массивы, которые нужно записать:
Java
1
2
public ArrayList<Double> x1 = new ArrayList<Double>();
    public ArrayList<Double> x2 = new ArrayList<Double>();
Но проблема в том, что данные не записываются. Заранее благодарен за помощь!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2012, 23:37
Ответы с готовыми решениями:

Как все данные в БД (MySQL ) записать в массив ? (Вообще нужно вывести БД в JTable)
Есть подключения к базе данных! Знаю как вывести всю информацию..... while(rs.next()){ rs.getString(1); }

Не могу записать данные в sql
GET данных передает. но записат не могу получаю ответ &quot;Данные НЕ были записаны!&quot; &lt;? ...

Не могу записать данные в железку (windows)
Пишу драйвер под windows, wdf, железка - контроллер саn в pcie, на борту 2 чипа саn и мост в pcie. Доступ к регистрам чипов саn -...

8
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
25.12.2012, 11:41
Цитата Сообщение от ДК Посмотреть сообщение
что это довольно-таки сложный класс
нет не чего проще ...(с)
делаем модель
Кликните здесь для просмотра всего текста
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
package Table;
 
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
 
/**
 * User: Drygba
 * Date: 25.12.12
 */
public class TwoModel extends AbstractTableModel{
    ArrayList<Double> x;
    String[] ColumnName = {"числа"};
    TwoModel(ArrayList<Double> x1, ArrayList<Double>x2){
        x = new ArrayList<Double>();
        x.addAll(x1);
        x.addAll(x2);
    }
    @Override
    public int getRowCount(){
        return x.size();
    }
    @Override
    public int getColumnCount(){
        return 1;
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex){
        return x.get(rowIndex);
    }
}

используем
Кликните здесь для просмотра всего текста
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
package Table;
 
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
 
/**
 * User: Drygba
 * Date: 25.12.12
 */
public class TwoData2Table extends JFrame{
 
    TwoData2Table(){
        setSize(200, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
 
        ArrayList<Double> x1 = new ArrayList<Double>();
        ArrayList<Double> x2 = new ArrayList<Double>();
        for (double i = 0, k = 0; i<10; i++, k--){
            x1.add(i);
            x2.add(k);
        }
        TwoModel MyModel = new TwoModel(x1, x2);
        JTable table = new JTable(MyModel);
        add(new JScrollPane().add(table));
    }
 
    public static void main(String[] arg){
        new TwoData2Table().setVisible(true);
    }
}
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 15
25.12.2012, 12:25  [ТС]
Спасибо, я попробовал:
Делаю модель:
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
public class hookeModel extends AbstractTableModel                 //setting Hooke-Jeeves' table model
    {
        final String [] colHeaders = {"x1","x2","i"};
        Object [][]data= new Object[A.x1.size()][colHeaders.length];
        hookeModel(ArrayList<Double> x1,ArrayList<Double> x2)
        {
            x1.addAll(A.x1);
            x2.addAll(A.x2);
        }
        @Override
        public int getColumnCount()
        {
            return colHeaders.length;  //To change body of implemented methods use File | Settings | File Templates.
        }
 
        @Override
        public int getRowCount()
        {
            return A.x1.size();  //To change body of implemented methods use File | Settings | File Templates.
        }
 
        @Override
        public Object getValueAt(int rowIndex, int columnIndex)
        {
            return null;  //To change body of implemented methods use File | Settings | File Templates.
        }
 
        @Override
        public String getColumnName(int column)
        {
            return colHeaders[column];
        }
        @Override
        public boolean isCellEditable(int row, int col)
        {
            return false;
        }
        public void setValueAt(Object val, int row, int col)
        {
            data[row][col]=val;
            fireTableDataChanged();
        }
};
и использую:
Java
1
2
hookeModel model1 = new hookeModel(A.x1,A.x2);
        hookeTable.setModel(model1);
Но по-прежнему ничего не происходит.
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
25.12.2012, 13:05
винегрет
у вас все в кучу навалено
зачем это тут? если даже не используется не где
Java
1
Object [][]data= new Object[A.x1.size()][colHeaders.length];
вы передаете два аргумента x1 и x2 и зачем то сними что то делаете, вместо того что бы из двух массивов сделать один
Java
1
2
3
4
5
hookeModel(ArrayList<Double> x1,ArrayList<Double> x2)
        {
            x1.addAll(A.x1);
            x2.addAll(A.x2);
        }
кто такой A.x1?
Java
1
2
3
4
  public int getRowCount()
        {
            return A.x1.size();  
        }
данный метод как раз и занимается заполнением таблицы, у вас он возвращает null
Java
1
2
3
4
public Object getValueAt(int rowIndex, int columnIndex)
        {
            return null;  //To change body of implemented methods use File | Settings | File Templates.
        }
смысл заполнять data если он не используется?
Java
1
2
3
4
5
 public void setValueAt(Object val, int row, int col)
        {
            data[row][col]=val;
            fireTableDataChanged();
        }
берем приведенный выше код и разбираем
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class TwoModel extends AbstractTableModel{
    ArrayList<Double> x; //создаем массив для хранения переданных двух массивов
    String[] ColumnName = {"числа"};//подпись столбцов
    TwoModel(ArrayList<Double> x1, ArrayList<Double>x2){//конструктор принимает два массива
        x = new ArrayList<Double>();
        x.addAll(x1);//добавляем первый переданный массив в наш
        x.addAll(x2);//добавляем второй переданный массив в наш
    }
    @Override
    public int getRowCount(){
        return x.size();//количество строк высчитывает на основе размера массива x
    }
    @Override
    public int getColumnCount(){
        return 1;//количество столбцов, в нашем случае 1
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex){
        return x.get(rowIndex);//непосредственное заполнение таблицы
    }
}
и используем то что получилось
Java
1
2
3
TwoModel MyModel = new TwoModel(x1, x2);//создаем экземпляр нашей модели таблицы и передаем ей два массива
        JTable table = new JTable(MyModel);//создаем таблицу на основе нашей модели
        add(new JScrollPane().add(table));//добавляем таблицу на понель
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 15
25.12.2012, 13:10  [ТС]
Насколько я понимаю, в Вашем примере в таблицу записывается один массив х, состоящий из х1 и х2?
Как же записать два массива? По одному в каждую колонку.
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
25.12.2012, 13:42
тьфу, я что на телепата похож
Цитата Сообщение от ДК Посмотреть сообщение
Как же записать два массива? По одному в каждую колонку.
не могли сразу указать?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 15
25.12.2012, 13:44  [ТС]
Цитата Сообщение от ДК Посмотреть сообщение
Нужно записать в таблицу два массива.
Дык я указал
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
25.12.2012, 13:51
а уточнение ?
Цитата Сообщение от ДК Посмотреть сообщение
По одному в каждую колонку.
тогда так, при условии что массивы одинаковой длины
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
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
 
/**
 * User: Drygba
 * Date: 25.12.12
 */
public class TwoModel extends AbstractTableModel{
    ArrayList<Double> x1;
    ArrayList<Double> x2;
 
    TwoModel(ArrayList<Double> x1, ArrayList<Double> x2){
        this.x1 = x1;
        this.x2 = x2;
    }
    @Override
    public int getColumnCount()
    {
        return 2;
    }
    @Override
    public int getRowCount()
    {
        return x1.size();  
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex)
    {
        switch (columnIndex){
            case 0:
                return x1.get(rowIndex);
            case 1:
                return x2.get(rowIndex);
            default:
                return null;
        }
 
    }
}
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 15
25.12.2012, 14:21  [ТС]
Большое человеческое спасибо Вам!!
Простите за назойливость, но еще есть такая проблема. Немного не в тему, но возможно Вы сможете помочь.
Эта программа оптимизирует функцию. Есть форма (на скрине). Кнопка "Calculate" выполняет все действия, то бишь считывает из чекбоксов, вызывает методы из нужных классов и записывает результаты вычислений.
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
private void calculateButtonActionPerformed(ActionEvent e)
    {
        A.a = Integer.parseInt(aField.getText());
        A.b = Double.parseDouble(bField.getText());
        A.c = Double.parseDouble(cField.getText());
        A.d = Double.parseDouble(dField.getText());
        A.eps = Double.parseDouble(epsField.getText());                  //Reading entered data
        A.x0[0] = Double.parseDouble(x0Field1.getText());
        A.x0[1] = Double.parseDouble(x0Field2.getText());
        B.a = Integer.parseInt(aField.getText());
        B.b = Double.parseDouble(bField.getText());
        B.c = Double.parseDouble(cField.getText());
        B.d = Double.parseDouble(dField.getText());
        B.eps = Double.parseDouble(epsField.getText());
        B.x0[0] = Double.parseDouble(x0Field1.getText());
        B.x0[1] = Double.parseDouble(x0Field2.getText());
 
        A.method();                                                      //Calculating
        //B.method();
 
        hookeModel model1 = new hookeModel(A.x1,A.x2);
        hookeTable.setModel(model1);
     
        this.x1HookeField.setText(Double.toString(A.x1min));
        this.x2HookeField.setText(Double.toString(A.x2min));
        this.fHookeField.setText(Double.toString(A.fmin));
    }
Объекты классов являются глобальными переменными формы:
Java
1
2
3
 public class Form extends JFrame {
    final HookeJeeves A = new HookeJeeves();
    final Rosenbrock B = new Rosenbrock();
Если ввести новые данные и нажать кнопку, то программа не считает все заново, а как бы добавляет к старым значениям новые. Как сделать так, чтобы при повторном нажатии этой кнопки программа пересчитывала все заново?
Миниатюры
Не могу записать в JTable данные  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2012, 14:21
Помогаю со студенческими работами здесь

Не могу получить данные из одного iframe и записать его в другой
Нужна помощь. У меня есть два фрейма, в первом есть две кнопки Радио, при выборе одной из них получает данные от sql и выводит их список в...

Не могу записать в базу данные, которые пользователь ввел при регистрации.
Ребята помогите! Вот делаю регистрацию нового пользователя. Она состоит из 4-х Textbox-ов: 'Имя, Пароль, Повтор пароля, Email' не могу...

Поместить данные в JTable
Помогите, люди добрые! Надо в апплете в JTable отобразить таблицу из БД, как? Интересуют так-же и другие компоненты (JList,...

Как форматировать данные в JTable
Есть таблица, код который прописан ниже описан в другом классе (на заметку).Таблица должна иметь 1 колонку, и 14 рядков. У меня есть...

Как данные с ArrayList поместить в JTable?
Всем привет! Есть 4 ArrayLista T, La, Lo, A. Как данные из этих листов поместить в JTable, чтобы каждый лист был в отдельной колонке? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru