Solaris 5.10: как скрыть кнопку JWindow на панели задач? - PullRequest
0 голосов
/ 27 августа 2009

Я использую объект JWindow в своем приложении Java для имитации выпадающего меню при наведении курсора мыши. Когда пользователь наводит курсор на JLabel, окно появляется и остается до тех пор, пока мышь не закроет ни метку, ни новое видимое окно. Моя проблема в том, что каждый раз, когда пользователь выполняет это действие, появляется новая запись на панели задач в нижней части экрана, без заголовка или значка, и исчезает, как только в окне вызывается setVisible (false).

Я попытался перейти на неокрашенный JDialog, и это исправило мою проблему с панелью задач, но ввел новую. Когда setVisible (true) вызывается на JDialog, фокус убирается из моего кадра. Цвет строки заголовка изменяется, чтобы указать на это, что выглядит непрофессионально.

При использовании неокрашенного JFrame возникли обе вышеуказанные проблемы

Я не хочу использовать JInternalFrame, так как для этого потребуется полная переработка моего интерфейса (переключение на структуру JDesktopPane), и мне не требуются другие функции JInternalFrame.

Есть идеи?

1 Ответ

0 голосов
/ 27 августа 2009

Для этого вы можете использовать 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 является создание Popup, которое ссылается на ваш Component, что потребует меньшего количества рефакторинга; например,

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

Кроме этого, я не думаю, что есть «быстрое решение» вашей проблемы: согласно Javadocs, JWindow - первоклассный пользователь рабочего стола, и я думаю, что именно Solaris добавляет соответствующий значок в задачу бар.

...