Przesyłanie danych z dziecka do rodzica JFrame

0

Witam mam okienko Rodzic po kliknieciu na button otwiera sie drugie okienko i chce by tam po klikneciu (w drugim okienku) zmieniała się wartość w pierwszym(Rodzic).

Możesz ktoś naprowadzić ?

0

podaj referencję rodzica drugiemu oknu + odpowiednia metoda

0

Tzn ?
W oknie rodzic przesyłam tak:
NoweOkno sk = new NoweOkno(this);

A w druim okienku jak wlasnie to odebrac ?

0

możesz na przykład tak

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class MainFrame extends JFrame {

	private JTextField textField;

	public MainFrame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);

		JPanel panel = new JPanel(new BorderLayout());

		JButton button = new JButton("Dziecko");
		button.addActionListener(new ShowChild());
		panel.add(button, BorderLayout.SOUTH);

		textField = new JTextField(10);
		panel.add(textField, BorderLayout.NORTH);


		setContentPane(panel);
		pack();
	}

	public void setValue(String name, Object value) {
		if (name.equals("AAA")) {
			textField.setText(value.toString());
		}
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				new MainFrame().setVisible(true);
			}
		});
	}

	private class ShowChild implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			new ChildFrame(MainFrame.this).setVisible(true);
		}
	}
}

class ChildFrame extends JDialog {

	private MainFrame rodzic;

	public ChildFrame(MainFrame rodzic) {
		super(rodzic, true);
		setLocationRelativeTo(rodzic);
		this.rodzic = rodzic;


		JPanel panel = new JPanel(new BorderLayout());

		final JTextField textField = new JTextField(10);
		panel.add(textField, BorderLayout.CENTER);

		JButton button = new JButton("AAA");
		button.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				ChildFrame.this.rodzic.setValue("AAA", textField.getText());
				setVisible(false);
			}
		});
		panel.add(button, BorderLayout.WEST);

		button = new JButton("BBB");
		button.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				ChildFrame.this.rodzic.setValue("BBB", textField.getText());
				setVisible(false);
			}
		});
		panel.add(button, BorderLayout.EAST);

		setContentPane(panel);
		pack();
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1