Solaris 5.10:如何隐藏任务栏上的JWindow按钮?

时间:2009-08-27 12:10:28

标签: java solaris taskbar jdialog

我在Java应用程序中使用JWindow对象来模拟鼠标悬停下拉菜单。当用户将鼠标悬停在JLabel上时,窗口会出现并保持不变,直到鼠标退出标签或新显示的窗口。我的问题是,每次用户执行此操作时,屏幕底部的任务栏中都会出现一个新条目,没有标题或图标,并且只要在窗口上调用setVisible(false)就会消失。

我尝试切换到一个未修饰的JDialog,这解决了我的任务栏问题,但引入了一个新问题。当在JDialog上调用setVisible(true)时,焦点将从我的框架中移除。标题栏的颜色会发生变化,表明这看起来很不专业。

使用未修饰的JFrame,发生了上述两个问题

我不希望使用JInternalFrame,因为需要完全重新设计我的界面(切换到JDesktopPane结构),而且我不需要JInternalFrame的任何其他功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用JPopupMenu

popupMenu = new JPopupMenu();

Action showPopupAction = new AbstractAction("Show Popup") {
  public void actionPerformed(ActionEvent e) {
    AbstractButton btn = (AbstractButton)e.getSource();
    Point buttonXY = btn.getLocationOnScreen();
    popupMenu.setLocation((int) buttonXY.getX(), ((int) buttonXY.getY()) + btn.getHeight() + 2);
    popupMenu.setVisible(true);
  }
};

JButton btn = new JButton(showPopupAction);

编辑:使用完整的JPopupMenu的另一种方法是创建引用您的PopupComponent,这将需要更少的重构; e.g。

Component myMnu = ...
Popup popup = new Popup(null, myMnu, 100, 100);
popup.show();

除此之外我不认为你的问题有“快速修复”:根据Javadocs,JWindow是桌面的一等公民,我想这就是Solaris为这个任务添加相应图标的原因杆