En el pasado, cuando se hizo una JPopupMenu
visible es el primer artículo conseguiría seleccionado por defecto: http://weblogs.java.net/blog/alexfromsun/archive/2008/02/jtrayicon_updat.html¿Cómo seleccionar el primer elemento en JPopupMenu?
Hoy en día el comportamiento por defecto es para que aparezca el menú sin ningún elemento seleccionado. Me gustaría crear un JPopupMenu
con un solo elemento que aparecerá seleccionado y centrado bajo el puntero del mouse. He logrado que el elemento aparezca emergente centrado bajo el mouse pero I JMenuItem
se niega a procesar como si estuviera seleccionado. Si retiro el mouse del elemento y lo vuelvo a seleccionar, lo seleccionará correctamente.
¿Alguna idea?
Aquí es mi caso de prueba:
import java.awt.Component;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class Test extends JFrame
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(800, 600);
frame.getContentPane().addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
if (e.isPopupTrigger())
popupTriggered(e);
}
@Override
public void mouseReleased(MouseEvent e)
{
if (e.isPopupTrigger())
popupTriggered(e);
}
private void popupTriggered(MouseEvent e)
{
JPopupMenu menu = new JPopupMenu();
final JMenuItem item = new JMenuItem("This is a JMenuItem");
menu.add(item);
Point point = e.getPoint();
int x = point.x - (item.getPreferredSize().width/2);
int y = point.y - (item.getPreferredSize().height/2);
menu.show((Component) e.getSource(), x, y);
}
});
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
}
Encontré un comportamiento incoherente también (ver mi respuesta actualizada). ¿Puedes confirmar esto? –
Informé esto como un error a Sun. Te dejaré saber lo que escriben. – Gili
Aquí está el informe de errores asociado: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6799989 – Gili