栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

好的,我找到了一个解决方案(不知道这是否是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);     } });        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号