Chamando janelas

5 respostas
Hernaneprates

Olá pessoal, estou iniciando em java e tenho uma dúvida a respeito de como faço para criar várias janelas dentro de um único programa e ao chamar uma dela o ícone do programa na barra de tarefas permaneça o mesmo?
O fato é que ao referencia um objeto JFrame com outra janela que criei é como se abrisse um novo programa, isso eu não quero.

estou usando o seguinte código:

//dentro de um JFrame principal coloquei um botão que chama a janela cadastro de missionário “cadmiss”, ficou assim:

cadmiss cad = new cadmiss;
cad.serVisible(true);

Me ajudem por favor!
Ficarei muito grato.

5 Respostas

lina

Oi,

Acho que a solução seria criar um TrayIcon.

Tchauzin!

S

Não sei se isso eh o melhor mas tu podia fazer assim:

TelaPrincipal t; public CadMiss(TelaPrincipal t)//construtor padrao { this.t = t; this.t.setVisible(false); }

ai quando fechar o CadMiss tu faz isso

aí tu faz isso quando for abrir a CadMiss

levimendes

Acho que é isso que você está querendo:

http://download.oracle.com/javase/tutorial/uiswing/components/internalframe.html

Hernaneprates

Entendi amigo, porém em que classe eu coloco o código?
na classe principal ou na cadmiss?

levimendes

dá uma olhada neste código:

package jdesktoppane;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

public class JanelaPrincipal extends JFrame{

	JDesktopPane desktopPane = new JDesktopPane();
	JMenuBar barraMenu = new JMenuBar();
	JMenu menu = new JMenu("Chamar Janela");
	JMenuItem item = new JMenuItem("Chamar Janela");
	int x; 
	
	public JanelaPrincipal() {
		super("Teste JDesktopPane");
		
		init();
	}
	
	private void init() {
		montarJanelaPrincipal();
		montarJanelaInterna();
		mostrarJanela();
	}
	
	private void montarJanelaPrincipal() {
		setBounds(10, 10, 700, 700);
		setJMenuBar(montarMenu());
        desktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
		setContentPane(desktopPane);
	}
	
	private void montarJanelaInterna() {
		JInternalFrame janelInterna = new JInternalFrame();
		janelInterna.setSize(100, 150);
		janelInterna.setLocation(10 + x, 10);
		x += 25;
		janelInterna.setClosable(true);
		janelInterna.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
		desktopPane.add(janelInterna);
		desktopPane.setComponentZOrder(janelInterna, 0);
		janelInterna.setVisible(true);
	}	
	
	private JMenuBar montarMenu() {
		menu.add(item);
		item.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				montarJanelaInterna();
			}
		});
		barraMenu.add(menu);
		
		return barraMenu;
	}
	
	private void mostrarJanela() {
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			new JanelaPrincipal();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}
Criado 25 de novembro de 2010
Ultima resposta 25 de nov. de 2010
Respostas 5
Participantes 4