Criei um menu e ao clicar em um sub item quero abrir uma nova tela que contenha o JTabbedPane

2 respostas
C

Galera, boa noite.

Sou iniciante em Java, sei que tenho um longo caminho a percorrer até chegar ao nível de muitos aqui, mas com fé, força de vontade, muito estudo e ajuda dos amigos vou chegar lá.
Meu problema é o seguinte:
Criei uma classe gera um Jpanel com duas abas, depois criei uma outra classe para gerar um Jframe de teste. Nessa segunda classe tem um menu e ao clicar em um sub item desse menu, deveria abrir na tela o JPanel com as duas abas. Gera apenas um JPanel em branco.
Já revirei o google de cabeça para baixa e não encontrei nada desse tipo. Encontro apenas tutoriais explicando como fazer isso separadamente.
Se alguem puder me ajudar e agradeço e espero em breve poder retribuir o favor ajudando, a outros novatos.

Vou postar o código que montei, assim acho que fica mais fácil o entendimento de vocês.

Primeira Classe.

public class NewAbas extends JPanel{

private JTabbedPane abas;

public NewAbas(){
	abas = new JTabbedPane();
	JPanel jp = new JPanel(new GridLayout(2,2)); 
	jp.add(new JButton("Léxico"));
	jp.add(new JTextField("JTextField parrudo"));

	abas.addTab("Léxico", jp );
	
	jp = new JPanel(new GridLayout(2,2));
	jp.add(new JButton("Código"));
	jp.add(new JTextField("Código"));

	abas.addTab("Aba2",jp);
}

}

Segunda Classe:
public class TestaAbas extends JFrame {

JDesktopPane desktop;

public static void main(String[] args) {
	TestaAbas m = new TestaAbas();
	m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	m.setSize(700, 550);
	m.setLocationRelativeTo(null);
	m.setVisible(true);
}

public TestaAbas() {
	super("Programa de Compiladores");
	JMenuBar menuBar = new JMenuBar();

	JMenu menuCadastrar = new JMenu("Cadastro ");
	JMenuItem menuCadFuncionario = new JMenuItem("Analise");
	menuCadastrar.add(menuCadFuncionario);
	menuBar.add(menuCadastrar);

	setJMenuBar(menuBar);
	desktop = new JDesktopPane();
	desktop.setBackground(Color.black);		
	add(desktop);
	
	menuCadFuncionario.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			NewAbas TCP = new NewAbas();
			desktop.add(TCP);
			TCP.setSize(690, 490);
			TCP.setVisible(true);


		}
	}
		);

}
}

Desde já agradeço a todos.

2 Respostas

ViniGodoy

Oi,

Você pode editar seu texto aí em cima e colocar as tags code onde for apropriado, como descrito no tópico abaixo?
http://www.guj.com.br/posts/list/50115.java

Outra coisa, porque você está usando um JDesktopPane? Nâo vi nenhum JInternalPane na sua aplicação…

C

Hum... falha minha, mas já estou corrigindo o código e colocando o JInternalPane e colocando as Tags no Código.

Como vc pode ver coloquei o JInternalPane e o problema ainda continua. Certamente estou passando algum parâmetro errado, já verifiquei no javadocs com meu ingles macarrônico e não consegui identificar onde esta o problema.

Editei o codigo fonte conforme você pediu, mas pela visualização antes de postar parece que ficou igual a antes.

Primeira Classe.
public class NewAbas extends JPanel{

	private JTabbedPane abas;
	
	public NewAbas(){
		abas = new JTabbedPane();
		JPanel jp = new JPanel(new GridLayout(2,2)); 
		jp.add(new JButton("Léxico"));
		jp.add(new JTextField("Léxico"));

		abas.addTab("Léxico", jp );
		
		jp = new JPanel(new GridLayout(2,2));
		jp.add(new JButton("Código"));
		jp.add(new JTextField("Código"));

		abas.addTab("Aba2",jp);
	}
}

Segunda Classe.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class TestaAbas extends JFrame {

	JDesktopPane desktop;

	public static void main(String[] args) {
		TestaAbas m = new TestaAbas();
		m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		m.setSize(700, 550);
		m.setLocationRelativeTo(null);
		m.setVisible(true);
	}

	public TestaAbas() {
		super("Compiladores");
		JMenuBar menuBar = new JMenuBar();

		JMenu menuCadastrar = new JMenu("Cadastro ");
		JMenuItem menuCad = new JMenuItem("Analise");
		menuCadastrar.add(menuCad);
		menuBar.add(menuCadastrar);

		setJMenuBar(menuBar);
		desktop = new JDesktopPane();
		desktop.setBackground(Color.black);		
		add(desktop);
		
		menuCad.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JInternalFrame novaAba = new JInternalFrame("Analisador Léxico", false, true, true, true);
				NewAbas TCP = new NewAbas();
				novaAba.add(TCP, BorderLayout.CENTER);
				novaAba.pack();
				desktop.add(novaAba);
				novaAba.setSize(690, 490);
				novaAba.setVisible(true);
			}
		}
			);
		
    } 
}
Criado 9 de agosto de 2009
Ultima resposta 10 de ago. de 2009
Respostas 2
Participantes 2