Предотвратить появление JWindow поверх всех окон
Я использую JWindow в своем проекте для отображения пользовательского интерфейса, который не украшен, но также не отображается на панели задач. Но JWindow всегда находится поверх всех других окон. Я попытался установить для setAlwaysOnTop значение false, но, похоже, это не помогло.
Вот код, который может воспроизвести проблему:
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JWindow;
public class Test extends JWindow implements ActionListener {
public Test() {
setSize(300, 300);
setLocationRelativeTo(null);
setAlwaysOnTop(false);
JButton myButton = new JButton("Click Here");
myButton.addActionListener(this);
getContentPane().add(myButton);
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Click Here"))
JOptionPane.showMessageDialog(this, "This dialog box appears behind the JWindow!");
}
}
Моя ОС Linux, и я использую Oracle JDK 6. Кроме того, когда я тестировал свое приложение в Windows, я использовал JDialog для пользовательского интерфейса, и он работал нормально. Но в Linux JDialog, кажется, появляется в панели задач.
Любая помощь относительно того, как решить эту проблему?
1 ответ
После того, как вы установили видимость окна в True, вы отправляете его обратно так:
setVisible(true);
toBack();
Если позже вы захотите переместить его в верхнюю часть порядка размещения, просто позвоните:
toFront();
Подробнее здесь:
http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html
http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html