Вернуть данные из дочернего JFrame Swing Java

330
06 апреля 2017, 18:09

Подскажите пожалуйста. Я открываю в JFrame другой JFrame - дочерний. как мне можно получить данные из дочернего окна в родительский, по нажатию на ok? Я знаю что есть JOptionPane но она мне не совсем подходит - там нельзя разместить много элементов

Answer 1

Можно так...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MainClass {
    public static void main(String[] args) {
        new Father();
    }
}
class Father extends JFrame{
    private static final long serialVersionUID = 1L;
    private JLabel label;
    public Father() {
        super("Я - родительское окно.");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        label = new JLabel("Пусто");
        getContentPane().add(label);
        setBounds(50, 50, 300, 100);
        setVisible(true);
        new Son(this);
    }
    protected void setLabel(String text) {
        label.setText(text);
    }
}
class Son extends JFrame{
    private static final long serialVersionUID = 1L;
    public Son(final Father parent) {
        super("Я - \"дочернее\" окно.");
        setBounds(250, 150, 250, 100);
        setVisible(true);
        JButton btClick = new JButton("Кликни");
        getContentPane().add(btClick);
        btClick.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                //по клику на родительском изменится текст метки
                parent.setLabel("Полно");
            }
        });
    }
}
Answer 2

Правильным решением будет использовать паттерн MVC. Описываете модель у нее должна быть возможность изменятся.

В родительском окне модель отображается как вы опишете (например, таблица). Дочернее окно будет иметь свой контроллер и будет иметь ссылку на вашу модель. По нажатию на кнопку OK контроллер будет менять модель.

Подробнее о MVC можно почитать в этом ответе http://ru.stackoverflow.com/a/615287/215007

READ ALSO
Подключение dll в Maven проект. Jacob

Подключение dll в Maven проект. Jacob

Перевожу проект на maven и столкнулся со следующей проблемой: Есть такая библиотека - jacobИ у нее кроме jar есть 2 dll

265
Apache Tomcat не видит класс Java

Apache Tomcat не видит класс Java

Всем доброго времени суток! Разрабатываю сервлет (Eclipse Indigo, Apache Tomcat, J2EE), опыта очень малоВ сервлете надо задействовать метод Java-класса, который...

234
Почему центор и изображение в окне изменяет свой размер относительно размера окна?

Почему центор и изображение в окне изменяет свой размер относительно размера окна?

до этого использовал отрисовку AWTGraphics2d по мере разработки моего приложения столкнулся с проблемой сильных тормозов и пришлось браться за opengl...

178
помогите наить ошибку Форма jframe

помогите наить ошибку Форма jframe

я работаю в NetBeans IDE 82 в этом программе должно показать время и секунды в jLabel1

203