プロジェクトで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がタスクバーに表示されるようです。
これを解決する方法について何か助けはありますか?