Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 12
1

Как правильно обновить таблицу jtable из другого jframe

04.12.2014, 14:47. Просмотров 2054. Ответов 5
Метки нет (Все метки)

Добрый день, проблема такая, у меня есть jframe
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
48
49
50
51
52
53
54
55
56
57
58
59
package Forms;
 
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import TableModel.TableModelChain;
 
/**
 * Created by mr.Koch on 27.11.2014.
 */
public class JewelryFrame {
    private JPanel rootpanel;
    private JButton btnAddJewelry;
    private JTable tblJewelry;
    private JButton updateButton;
    TableModelChain TMC =new TableModelChain();
 
    public JewelryFrame() {
 
        tblJewelry.setModel(TMC);
 
 
 
 
        btnAddJewelry.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AddJeverly addjeverly= new AddJeverly();
                addjeverly.main();
            }
        });
        updateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tblJewelry.updateUI();
            }
        });
    }
 
    public static void main(String[] args) {
        JFrame frame = new JFrame("JewelryFrame");
        frame.setContentPane(new JewelryFrame().rootpanel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
 
    public JPanel getRootpanel() {
        return rootpanel;
    }
 
    public JButton getBtnAddJewelry() {
        return btnAddJewelry;
    }
 
    public JTable getTblJewelry() {
        return tblJewelry;
    }
}
В которой есть таблица jtable при нажатии на кнопку btnAddJewelry появляется jdialog с кнопками добавления элемента в таблицу

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package Forms;
 
import javax.swing.*;
import java.awt.event.*;
import Interface.CompletedInterfaceChain;
import Class.chain;
 
public class AddJeverly extends JDialog {
    private JPanel contentPane;
    private JButton buttonOK;
    private JButton buttonCancel;
    private JRadioButton rdbChain;
    private JRadioButton rdbRing;
    private JTabbedPane tabJewerly;
    private JFormattedTextField txtName;
    private JFormattedTextField txtPrcice;
    private JFormattedTextField txtKol;
    private JFormattedTextField txtMassa;
 
    public AddJeverly() {
        setContentPane(contentPane);
        setModal(true);
        getRootPane().setDefaultButton(buttonOK);
        TabActiveNone();
        tabJewerly.setEnabledAt(0,true);
        rdbChain.setSelected(true);
 
 
        buttonOK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onOK();
            }
        });
 
        buttonCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onCancel();
            }
        });
 
// call onCancel() when cross is clicked
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                onCancel();
            }
        });
 
// call onCancel() on ESCAPE
        contentPane.registerKeyboardAction(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onCancel();
            }
        }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        rdbChain.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                TabActiveNone();
                tabJewerly.setEnabledAt(0,true);
                tabJewerly.setSelectedIndex(0);
            }
        });
        rdbRing.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                TabActiveNone();
                tabJewerly.setEnabledAt(1,true);
                tabJewerly.setSelectedIndex(1);
            }
        });
    }
 
 
    private void onOK() {
        CompletedInterfaceChain cif= new CompletedInterfaceChain();
        //chain ch =new chain(txtName.getText(),Integer.valueOf(txtKol.getText()),cif.getListChain().size()+1,Double.valueOf(txtMassa.getText()),"ромб",25);
        cif.addChain((new chain("43o4523",4,20,1,4.7,"ромб",25)));
        JewelryFrame global =new JewelryFrame();
        global.getTblJewelry().updateUI();
 
 
 
        // add your code here
        // dispose();
    }
    public void TabActiveNone(){
        for (int i = 0; i <tabJewerly.getTabCount(); i++) {
            tabJewerly.setEnabledAt(i,false);
        }
 
    }
 
    private void onCancel() {
// add your code here if necessary
        dispose();
    }
 
    public static void main() {
        AddJeverly dialog = new AddJeverly();
        dialog.pack();
        dialog.setModal(true);
        dialog.setVisible(true);
        //System.exit(0);
    }
}
ребят помогите пожалуйста почему после того как вызывается метод onOK данные в таблице не обновляются? хотя если нажать на главной форме кнопку updateButton все обновляется в таблице?(добавление в тейблмодел идет все хорошо там)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2014, 14:47
Ответы с готовыми решениями:

Как сделать Jframe внутри другого JFrame
Доброго времени суток джентльмены и леди. Как сделать так, что бы внутри главного JFrame запустить...

Как перерисовывать JTable при появлении JFrame
Доброго времени суток. подскажите пожалуйста какой слушатель событий отслеживает вызов у окна...

Как обновить данные в JTable во время выполнения программы?
Господа, Я вывожу данные в таблицу T1(JTable), cvet2 -это новый символ, который я ввожу в таблицу....

JFrame, JTable. Чтение из текстового файла
Есть текстовый файл, в котором содержится информация о человеке: Имя, Фамилия, Возраст, Пол. В...

5
177 / 176 / 38
Регистрация: 16.06.2010
Сообщений: 511
04.12.2014, 21:57 2
Цитата Сообщение от Ilya13 Посмотреть сообщение
JewelryFrame global =new JewelryFrame(); global.getTblJewelry().updateUI();
Потому что создается новый фрейм с новой таблицей и всеми потрохами.
0
30 / 30 / 24
Регистрация: 21.01.2013
Сообщений: 227
05.12.2014, 05:54 3
попробуй создать одну модель таблицы и применяй их в двух формах
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 12
05.12.2014, 09:31  [ТС] 4
Цитата Сообщение от ][irurg Посмотреть сообщение
Потому что создается новый фрейм с новой таблицей и всеми потрохами.
Хорошо а как мне тогда вызвать метод updateUI компонента jTable?
0
177 / 176 / 38
Регистрация: 16.06.2010
Сообщений: 511
05.12.2014, 18:36 5
Получить ссылку на jTable или на того, кто может вызывать у jTable метот updateUI. (Ссылку передать в конструкторе или в методе). Вообще при изменении модели,шлют сообщение и jtable сам обновляется.
Советую почитать Хорстмана.
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 12
08.12.2014, 13:37  [ТС] 6
Решил проблему таким образом, создал приватное поле - ссылка на эту форму, и передал эту ссылку в другой класс
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
public class JewelryFrame {
    private  JewelryFrame myform;
    private JPanel rootpanel;
    private JButton btnAddJewelry;
    private JTable tblJewelry;
    private JButton updateButton;
    private JLabel label1;
    TableModelChain TMC =new TableModelChain();
 
    public JewelryFrame() {
        this.myform=this;
 
        tblJewelry.setModel(TMC);
 
        btnAddJewelry.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AddJeverly jdoalog=new AddJeverly(myform);
                jdoalog.pack();
                jdoalog.setVisible(true);
            }
 
        });
    }
 
   //......//
а дальше вызывал из дочерней формы все элементы главной формы через эту ссылку
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
public class AddJeverly extends JDialog {
    private JPanel contentPane;
    private JButton buttonOK;
    private JButton buttonCancel;
    private JRadioButton rdbChain;
    private JRadioButton rdbRing;
    private JTabbedPane tabJewerly;
    private JFormattedTextField txtName;
    private JFormattedTextField txtPrcice;
    private JFormattedTextField txtKol;
    private JFormattedTextField txtMassa;
    private JewelryFrame ParentForm;
 
    public AddJeverly( JewelryFrame ParentForm) {
        this.ParentForm=ParentForm;
//....////
private void onOK() {
        CompletedInterfaceChain cif = new CompletedInterfaceChain();
 
        cif.addChain((new chain("43o4523", 4, 20, 1, 4.7, "ромб", 25)));
 
        ParentForm.getTblJewelry().updateUI();
        // dispose();
    }
Вопрос к Гуру, все ли правильно с делал с точки зрения ООП
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2014, 13:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как обратиться к объекту на форме JFrame из другого класса
Здравствуйте! Может быть вопрос, сто раз задавался, но я конкретного решения не нашел. Главная...

Как правильно создавать JFrame?
научите! подскажиет! посоветуйте где почитать! как правильно создать Jframe? вот есть код к...

Как правильно занести данные из вектора и JTable ?
Делаю так: vColName.addElement('1'); vColName.addElement('2'); vDat - здесь данные...

Как в таблицу JTable засунуть свой заголовок калонки?
Как в таблицу JTable засунуть свой заголовок калонки(одинаковый для всех колонок). Заголовок кроме...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.