Como criar um programa com várias janelas?

Estou a procura da melhor forma de se fazer um programa com mais de uma janela. Eu tenho uma janela principal, no menu dessa janela eu tenho um item “configurações” que deve abrir uma outra janela. Esta janela que será aberta contem configurações irão refletir na janela principal. Qual a melhor forma de fazer isso? A nova janela será um JFrame? Eu devo criar uma instancia da janela secundaria na janela principal? Devo criar um método “getConfiguracoes” na janela secundária para obter os valores?

Pesquise sobre InternalFrame.

Criei um JFrame no item de menu configuracao na acao do item ele cria um InternalFrame e adiciona a um JDesktopPane…

Bom pesquise sobre isso que vai te ajudar a resolver o seu problema…

dando + consistência á resposta do correainfo, adiciona o jframe, depois o desktop, e dentro do desktop vai inserindo os internalframes, dentro deles os outros elementos e dpx é só definires a forma como keres k eles apareçam

Olá
Como nossos colegas falaram, concordo com eles e queria postar um exemplo.

import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;

public class JInternalFrameDemo extends JFrame {

	JDesktopPane jdpDesktop;
	static int openFrameCount = 0;
	public JInternalFrameDemo() {
		super("JInternalFrame Usage Demo");
		// Make the main window positioned as 50 pixels from each edge of the
		// screen.
		int inset = 50;
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		setBounds(inset, inset, screenSize.width - inset * 2,
				screenSize.height - inset * 2);
		// Add a Window Exit Listener
		addWindowListener(new WindowAdapter() {

			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		// Create and Set up the GUI.
		jdpDesktop = new JDesktopPane();
		// A specialized layered pane to be used with JInternalFrames
		createFrame(); // Create first window
		setContentPane(jdpDesktop);
		setJMenuBar(createMenuBar());
		// Make dragging faster by setting drag mode to Outline
		jdpDesktop.putClientProperty("JDesktopPane.dragMode", "outline");
	}
	protected JMenuBar createMenuBar() {
		JMenuBar menuBar = new JMenuBar();
		JMenu menu = new JMenu("Frame");
		menu.setMnemonic(KeyEvent.VK_N);
		JMenuItem menuItem = new JMenuItem("New IFrame");
		menuItem.setMnemonic(KeyEvent.VK_N);
		menuItem.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				createFrame();
			}
		});
		menu.add(menuItem);
		menuBar.add(menu);
		return menuBar;
	}
	protected void createFrame() {
		MyInternalFrame frame = new MyInternalFrame();
		frame.setVisible(true);
		// Every JInternalFrame must be added to content pane using JDesktopPane
		jdpDesktop.add(frame);
		try {
			frame.setSelected(true);
		} catch (java.beans.PropertyVetoException e) {
		}
	}
	public static void main(String[] args) {
		JInternalFrameDemo frame = new JInternalFrameDemo();
		frame.setVisible(true);
	}
	class MyInternalFrame extends JInternalFrame {

		static final int xPosition = 30, yPosition = 30;
		public MyInternalFrame() {
			super("IFrame #" + (++openFrameCount), true, // resizable
					true, // closable
					true, // maximizable
					true);// iconifiable
			setSize(300, 300);
			// Set the window's location.
			setLocation(xPosition * openFrameCount, yPosition
					* openFrameCount);
		}
	}
}

Código extraido do site: link

Espero ter ajudado
Flwsss

Mas, e se eu tiver uma JanelaPrincipal (JFrame) que abre outra JanelaSecundaria (JFrame), como eu faço para que a JanelaPrincipal obtenha dados vindos da JanelaSecundaria?

Obs.: a JanelaSecundaria é uma instancia criada dentro da JanelaPrincipal.

[quote=EugenioMonteiro]Mas, e se eu tiver uma JanelaPrincipal (JFrame) que abre outra JanelaSecundaria (JFrame), como eu faço para que a JanelaPrincipal obtenha dados vindos da JanelaSecundaria?

Obs.: a JanelaSecundaria é uma instancia criada dentro da JanelaPrincipal.[/quote]

Passo como parametro na hora de instânciar o frame, passa a instancia da classe principal e boa

Algo assim:

e o parametro do construtor é a JanelaPrimaria:

public JanelaSecundaria(JanelaPrimaria janelaAntiga){ // Sei la o que quer fazer agora, passa para um atributo e boa }

Valeu!