仅将框架始终放在程序顶部

仅将框架始终放在程序顶部,第1张

仅将框架始终放在程序顶部

好的,我找到了一个解决方案(不知道这是否是THE解决方案,但是它正在工作,所以…)

我发现了setFocusableWindowState(),它非常适合工具栏。顺便说一句,我不知道我以前的setFocusable(false)是否有任何作用。

下一个问题是此代码使焦点变得非常奇怪:如果我从MyApp切换到Firefox,则会发生以下情况:

focus : MyApp -> Firefoxexecution of MyDialog.toFront()focus : Firefox -> MyDialogMyDialog not focusable !focus : MyDialog -> MyApp !!!

结果:什么都没有改变!

因此,我终于有了窍门:在MyDialog.toFront()之后,您将焦点返回给了先前的所有者。我发现没有错误的唯一方法是:mainframe.toBack()

最终代码:

public class Test {    private static Jframe mainframe;    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     mainframe = new Jframe("test");     mainframe.setSize(800,600);     mainframe.setDefaultCloseOperation(Jframe.DISPOSE_ON_CLOSE);     mainframe.setVisible(true);     A a = new A(); }        });    }    public static class A extends JDialog {        public A() { super(mainframe); setAlwaysonTop(true); setFocusableWindowState(false); setSize(80,60); setVisible(true); mainframe.addWindowListener(new WindowAdapter() {     @Override     public void windowActivated(WindowEvent e) {         A.this.setAlwaysonTop(true);         A.this.toFront();     }     @Override     public void windowDeactivated(WindowEvent e) {         A.this.setAlwaysonTop(false);     } });        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存