Предотвратить появление 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

Другие вопросы по тегам