|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
In native applications for Windows, if a popup is big enough
it can overlap the taskbar (see the image attached)
the same behaiviour can be seen for GTK on *nix
Swing doesn't allow popups to overlap taskbar
and it prevents Swing applications from looking native
and the most important it doesn't allow to implement
the JTrayIcon to use JPopupMenu together with awt.TrayIcon
Use the simple test to see that popup doesn't overlap taskbar:
import javax.swing.*;
public class PopupTest {
private static void createGui() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPopupMenu menu = new JPopupMenu("Menu");
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
menu.add(new JMenuItem("MenuItem"));
JPanel panel = new JPanel();
panel.setComponentPopupMenu(menu);
frame.add(panel);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
PopupTest.createGui();
}
});
}
}
|