내 프로젝트에서 JWindow를 사용하여 장식되지 않은 UI를 표시하고 작업 표시 줄에도 나타나지 않습니다. 그러나 JWindow는 항상 다른 모든 창 위에있는 것으로 보입니다. 나는 setAlwaysOnTop을 false로 설정하려고 시도했지만 도움이되지 않았다. 여기 모든 윈도우 상단에 JWindow가 나타나지 않도록합니다.
문제를 재현 할 수있는 코드입니다 :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가 리눅스이고 내가 Windows에서 내 응용 프로그램을 테스트하는 동안, I가되는 JDialog를 사용하고, 또한 오라클 JDK 6을 사용하고 있습니다 UI 및 그것은 잘 작동했다. 그러나 Linux에서는 JDialog가 작업 표시 줄에 표시됩니다.
이 문제를 해결하는 방법에 대한 도움이 필요하십니까? 나중에, 당신은 단순히, 스택 순서의 상단에 당신이 그것을 가지고 싶어,
setVisible(true);
toBack();
경우 : True로 윈도우의 가시성을 설정 한 후
[Linus의 Modal 및 ModalityTypes에 대한 일반적인 문제인 것처럼 보입니다.] (http://stackoverflow.com/questions/14645761/modal-dialog-not-always-on-top-of-an -undecorated-jframe-when-another-jframe-is-v) – mKorbel
저는 Modality에 문제가 있다고 생각하지 않습니다. JWindow가 위에있을 때 나는 다른 윈도우와 어플리케이션에 접근 할 수있다. 그러나 JWindow는 되돌아 가지 않으며 항상 맨 위에 있습니다. –