Problemas ao usar JPopupMenu com JTree

0 respostas
R

eaw pessoal blz?
entao preciso fazer uma tela com um Jtree que ao clicar com o botao direito ele aparece um menu e neste menu ao clicar em algum dos item ele apareca um novo menu

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

public class PopupMenu {
	private static DefaultMutableTreeNode top;
	private static JTree tree;
	private static TreePath path;

	public static void main(String[] args) {

		top = new DefaultMutableTreeNode("Layer");
		DefaultMutableTreeNode vista = new DefaultMutableTreeNode("Vista");
		DefaultMutableTreeNode tema = new DefaultMutableTreeNode("Tema");
		top.add(vista);
		vista.add(tema);

		tree = new JTree(top);

		JFrame frame = new JFrame("JPopupMenu");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		final Toolkit toolkit = frame.getToolkit();

		final JPopupMenu menu = new JPopupMenu();
		final JPopupMenu renomearMenu = new JPopupMenu();
		final JPanel panel2=new JPanel();
		final JTextField texto = new JTextField(50);
		JButton botao = new JButton("Ok");
		final JMenuItem renomear = new JMenuItem("Renomear");
		final JMenuItem excluir = new JMenuItem("Excluir");
		final JMenuItem importar = new JMenuItem("Importar");
		final JMenuItem exportar = new JMenuItem("Exportar");
		renomear.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				renomearMenu.show(renomear,renomear.getX(),renomear.getY());				
			}
		});
		
		
		menu.add(renomear);
		menu.add(excluir);
		menu.add(importar);
		menu.add(exportar);

		

		JPanel panel = new JPanel();
		panel.add(tree);
		tree.setComponentPopupMenu(menu);
		renomear.setComponentPopupMenu(renomearMenu);
		panel.setSize(120, 500);
		panel.setVisible(true);
		panel.setSize(100, 400);
		frame.add(panel, BorderLayout.WEST);
		frame.setSize(500, 400);
		frame.setVisible(true);
	}
}

com este codigo o JTree funciona certinho e o primeiro menu tambem mas clicar no renomear era pra abrir um novo menu mas esta dando o seguinte erro:
Exception in thread “AWT-EventQueue-0” java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location

se alguem puder me ajudar
vlw
abraco

Criado 9 de dezembro de 2009
Respostas 0
Participantes 1