Ajuda com JInternalFrame

3 respostas
Jorgev

Galera eu tou com uns problemas com internalframe.

1º - eu tou com uma tela que tem um jdesdtoppane onde eu abro varios internalframe, o problema é que quando eu abro um que vou abrir outro o novo fica por traz do outro, eu quero que fique na frente.

2º - quando eu abro o internalframe eu quero que o cursor fique no primeiro textfield, já tentei várias coisas e nao consegui.

3º - eu tenho um internalframe que tem um botão que abre outro internalframe, eu queria que esse ultimo impedisse a utilização do primeiro até que ele fosse fechado.

Alguém tem alguma idéia de como fazer essas coisas.
Por favor, é urgente.

Abraço

3 Respostas

T
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JanelaMDI extends JFrame {

	private JDesktopPane desk;
	private JButton cmdbotao;
	private int qtde = 0;

	public JanelaMDI() {
		super();
		setBounds(10,10,400,400);
	
		cmdbotao = new JButton("Adicionar Nova Janela");
		desk = new JDesktopPane();
	
		getContentPane().add(cmdbotao,BorderLayout.NORTH);
		getContentPane().add(desk);

		cmdbotao.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JanelaInterna jan = new JanelaInterna();
				jan.setVisible(true);
				desk.add(jan);
				jan.toFront();
				try {
    				  jan.setSelected(true);
				    } catch (java.beans.PropertyVetoException e1) {}	

			}

		});

		setVisible(true);

	}


	public static void main(String[] args){
		new JanelaMDI();
	}
}

class JanelaInterna extends JInternalFrame {
	private JTextField caixa1,caixa2,caixa3;
	private JLabel l1,l2,l3;
	private JButton cmdbotao;
	static int contador = 0;
	static final int x = 30, y = 30;

	public JanelaInterna() {
	        super("Janela " + (++contador),true, true, true,true);
	
                setLocation(x*contador, y*contador);
		setLayout(new GridLayout(0,2));

		caixa1 = new JTextField();
		caixa2 = new JTextField();
		caixa3 = new JTextField();

		l1 = new JLabel("Caixa 1");
		l2 = new JLabel("Caixa 2");
		l3 = new JLabel("Caixa 3");

		cmdbotao = new JButton("Nova Janela");

		getContentPane().add(l1);
		getContentPane().add(caixa1);
		getContentPane().add(l2);
		getContentPane().add(caixa2);
		getContentPane().add(l3);
		getContentPane().add(caixa3);
		getContentPane().add(new JLabel(""));
		getContentPane().add(cmdbotao);

		pack();


		cmdbotao.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				new JanelaModal();
			}
		});
		
	}




}


class JanelaModal extends JDialog {

	private JTextField caixa1;
	private JButton cmdbotao;


	public JanelaModal() {
		super();
		setModal(true);

		setLayout(new GridLayout(0,2));

		
		caixa1 = new JTextField();
		cmdbotao = new JButton("Fechar");

		getContentPane().add(new JLabel("Caixa 1"));
		getContentPane().add(caixa1);
		getContentPane().add(new JLabel(""));
		getContentPane().add(cmdbotao);

		cmdbotao.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}

		});				

		pack();
		setLocation(50,50);
		setVisible(true);
	}

}
Jorgev

Amigo valeu a ajuda.

Agora eu fiquei curioso com uma coisa. Pra que serve esse metodo?

pack();

Abraço

T

Serve para redimensionar a janela.

Criado 15 de janeiro de 2008
Ultima resposta 18 de jan. de 2008
Respostas 3
Participantes 2