dsiviotti 4 de mar. de 2004
Olha uns fragmentos de um programa que funciona aqui:
// JPopupMenu
private JPopupMenu pop = null;
// Itens
private JMenuItem jMenuItem = null ;
private JMenuItem jMenuItem1 = null ;
// botão que chama o menu
private btnTools = null;
// Crie os componentes de menu, o botão e tudo mais
// Coloque no actionPerformed do botão ou onde seja executado ao clicar
pop.show(btnTools, btnTools.getWidth(), btnTools.getHeight());
Acho que isso já funciona…
dsiviotti 4 de mar. de 2004
Aqui vai um exemplo completo:
/*
* Created on 04 / 03 / 2004
*/
package teste ;
import javax.swing.JFrame ;
/**
* @author Douglas Siviotti
*/
public class PopupTeste extends JFrame & #123;
private javax . swing . JPanel jContentPane = null ;
private javax . swing . JPanel jPanel = null ;
private javax . swing . JButton jButton = null ;
private javax . swing . JPopupMenu popup = null ;
private javax . swing . JMenuItem miPopup1 = null ;
private javax . swing . JMenuItem miPopu2 = null ;
public static void main & #40;String[] args) {
PopupTeste app = new PopupTeste & #40;);
app . setDefaultCloseOperation & #40;JFrame.EXIT_ON_CLOSE);
app . show & #40;);
& #125;
/**
* This is the default constructor
*/
public PopupTeste & #40;) {
super & #40;);
initialize & #40;);
& #125;
/**
* This method initializes this
*
* @return void
*/
private void initialize & #40;) {
this . setSize & #40;370, 266);
this . setContentPane & #40;getJContentPane());
& #125;
/**
* This method initializes jContentPane
*
* @return javax . swing . JPanel
*/
private javax . swing . JPanel getJContentPane & #40;) {
if & #40;jContentPane == null) {
jContentPane = new javax . swing . JPanel & #40;);
jContentPane . setLayout & #40;new java.awt.BorderLayout());
jContentPane . add & #40;getJPanel(), java.awt.BorderLayout.NORTH);
jContentPane . add & #40;getPopup(), java.awt.BorderLayout.EAST);
& #125;
return jContentPane ;
& #125;
/**
* This method initializes jPanel
*
* @return javax . swing . JPanel
*/
private javax . swing . JPanel getJPanel & #40;) {
if & #40;jPanel == null) {
jPanel = new javax . swing . JPanel & #40;);
jPanel . add & #40;getJButton(), null);
& #125;
return jPanel ;
& #125;
/**
* This method initializes jButton
*
* @return javax . swing . JButton
*/
private javax . swing . JButton getJButton & #40;) {
if & #40;jButton == null) {
jButton = new javax . swing . JButton & #40;);
jButton . setText & #40;"Mostrar Popup");
jButton . addActionListener & #40;new java.awt.event.ActionListener() {
public void actionPerformed & #40;java.awt.event.ActionEvent e) {
popup . show & #40;jButton, jButton.getWidth(), jButton.getHeight());
& #125;
& #125;);
& #125;
return jButton ;
& #125;
/**
* This method initializes popup
*
* @return javax . swing . JPopupMenu
*/
private javax . swing . JPopupMenu getPopup & #40;) {
if & #40;popup == null) {
popup = new javax . swing . JPopupMenu & #40;);
popup . add & #40;getMiPopup1());
popup . add & #40;getMiPopu2());
& #125;
return popup ;
& #125;
/**
* This method initializes miPopup1
*
* @return javax . swing . JMenuItem
*/
private javax . swing . JMenuItem getMiPopup1 & #40;) {
if & #40;miPopup1 == null) {
miPopup1 = new javax . swing . JMenuItem & #40;);
miPopup1 . setText & #40;"Item 1");
& #125;
return miPopup1 ;
& #125;
/**
* This method initializes miPopu2
*
* @return javax . swing . JMenuItem
*/
private javax . swing . JMenuItem getMiPopu2 & #40;) {
if & #40;miPopu2 == null) {
miPopu2 = new javax . swing . JMenuItem & #40;);
miPopu2 . setText & #40;"Item 2");
& #125;
return miPopu2 ;
& #125;
& #125;
Acho que o fundamental é:
popup.show(jButton, jButton.getWidth(), jButton.getHeight());