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