JDesktopPane(Resolvido)

Boa tarde galera, segue meu caso, tenho este item de menu:

code:

JMenuItem mntmNewMenuItem = new JMenuItem("Cadastrar Funcionário");

		mntmNewMenuItem.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/usuarios.png")));
		menuFuncionario.add(mntmNewMenuItem);

Imagem:

vou adicionar uma action neste item menu, então o código passa a ficar desta forma:

JMenuItem mntmNewMenuItem = new JMenuItem("Cadastrar Funcionário");
		mntmNewMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CadastroDeFuncionario cadFuncionario = new CadastroDeFuncionario();
				
			}
		});

agora vou adicionar cadFuncionario ao painelDesktop(JpanelDesktop)…porem o eclipse “não encontra” o painel…alguem sabe por qual motivo ele não encontra o panel?

Vou colocar o código completo para analisarem:

package br.com.fjsistemas.view;

import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Principal extends JFrame {

	private static final long serialVersionUID = -3858895069760803926L;
	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Principal frame = new Principal();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public Principal() {

		setTitle("FJSistemas");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 605, 427);
		setLocationRelativeTo(null);

		JMenuBar menuBar = new JMenuBar();
		JMenu menuCadastro = new JMenu("Cadastros");
		menuCadastro.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/Cadastro.png")));
		JMenu menuLancamento = new JMenu("Lançamentos"); // criando as opções do menu
		menuLancamento.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/Lancamento.png")));
		JMenu menuRelatorio = new JMenu("Relatórios");
		menuRelatorio.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/relatorio.png")));
		JMenu menuFuncionario = new JMenu("Funcionário");
		menuFuncionario
				.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/Funcionario.png")));

		menuBar.add(menuCadastro);
		menuBar.add(menuLancamento);
		menuBar.add(menuRelatorio);
		menuBar.add(menuFuncionario);

		JMenuItem mntmNewMenuItem = new JMenuItem("Cadastrar Funcionário");
		mntmNewMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CadastroDeFuncionario cadFuncionario = new CadastroDeFuncionario();
				
			}
		});

		mntmNewMenuItem.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/usuarios.png")));
		menuFuncionario.add(mntmNewMenuItem);

		JMenuItem mntmNewMenuItem_3 = new JMenuItem("Buscar Funcionário");
		mntmNewMenuItem_3
				.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/usuarioBuscar.png")));
		menuFuncionario.add(mntmNewMenuItem_3);

		JMenuItem mntmNewMenuItem_2 = new JMenuItem("Editar Funcionário");
		mntmNewMenuItem_2
				.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/usuarioAlterar.png")));
		menuFuncionario.add(mntmNewMenuItem_2);

		JMenuItem mntmNewMenuItem_1 = new JMenuItem("Excluir Funcionário");
		mntmNewMenuItem_1
				.setIcon(new ImageIcon(Principal.class.getResource("/br/com/fjsistemas/imagens/usuarioExcluir.png")));
		menuFuncionario.add(mntmNewMenuItem_1);

		setJMenuBar(menuBar);
		contentPane = new JPanel();
		contentPane.setBackground(Color.WHITE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		setLocationRelativeTo(null);

		JDesktopPane painelDesktop = new JDesktopPane();
		painelDesktop.setBackground(Color.LIGHT_GRAY);
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addComponent(painelDesktop, GroupLayout.DEFAULT_SIZE, 424, Short.MAX_VALUE));
		gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addComponent(painelDesktop, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE));

		contentPane.setLayout(gl_contentPane);
	}
}

Para ficar mais claro:

É que o seu painelDesktop é apenas uma variável local dentro do construtor de Principal e você só está declarando ele depois da implementação do ActionListener.

1 curtida

@staroski então a solução seria declarar ele antes da implementação Action:? Apenas isto?

Sim, mas você vai ter que declarar ele como final ou então como variável de instância, senão não vai conseguir acessas de dentro da classe anônima.

1 curtida

Ok, muito obg por compartilhar seu conhecimento!!

1 curtida