1

プロジェクトでJWindowを使用して、装飾されておらず、タスクバーにも表示されないUIを表示しています。ただし、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!");
    }
}

私のOSはLinuxで、Oracle JDK 6を使用しています。また、Windowsでアプリをテストしているときに、UIにJDialogを使用していて、正常に動作していました。しかし、LinuxではJDialogがタスクバーに表示されるようです。

これを解決する方法について何か助けはありますか?

4

1 に答える 1

0

ウィンドウの可視性を True に設定した後、次のように背面に送信します。

setVisible(true);
toBack();

後で、スタック順序の一番上に移動したい場合は、次のように呼び出します。

toFront();

詳細はこちら:

http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html#toBack()

http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html#toFront()

于 2013-02-06T13:24:47.883 に答える