当前位置: 首页 > 面试题库 >

Java-如何最佳定位Swing GUI?

曾枫
2023-03-14
问题内容

在另一个线程中,我表示我喜欢通过执行以下操作来居中GUI:

JFrame frame = new JFrame("Foo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new HexagonGrid());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

但是安德鲁·汤普森(Andrew Thompson)有不同的看法,而是打电话给

frame.pack();
frame.setLocationByPlatform(true);

想问的人想知道为什么吗?


问题答案:

在我看来,屏幕中间的GUI看起来是这样的。我一直在等待它们消失,真正的 GUI出现!

从Java 1.5开始,我们可以使用Window.setLocationByPlatform(boolean)。哪一个..

设置此窗口是否应在下一次使该窗口可见时显示在本机窗口系统的默认位置还是当前位置(由getLocation返回)。此行为类似于未通过编程设置其位置而显示的本机窗口。如果未明确设置窗口的位置,则大多数窗口系统会级联窗口。一旦窗口显示在屏幕上,便确定了实际位置。

这是使用的简单代码:

import javax.swing.*;

class WhereToPutTheGui {

    public static void initGui() {
        for (int ii=1; ii<4; ii++) {
            JFrame f = new JFrame("Frame " + ii);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            String s =
                "os.name: " + System.getProperty("os.name") +
                "\nos.version: " + System.getProperty("os.version");
            f.add(new JTextArea(s,3,28));  // suggest a size
            f.pack();
            // Let the OS handle the positioning!
            f.setLocationByPlatform(true);
            f.setVisible(true);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(
                        UIManager.getSystemLookAndFeelClassName());
                } catch (Exception useDefault) {}
                initGui();
            }
        });
    }
}


 类似资料:
  • 问题内容: 在另一个线程中,我表示我喜欢通过执行以下操作来居中GUI: 但是安德鲁·汤普森(Andrew Thompson)有不同的看法,而是打电话给 想问的人想知道为什么吗? 问题答案: 在我看来,屏幕中间的一个GUI看起来是这样的。我一直在等待它们消失,真正的GUI出现! 从Java 1.5开始,我们可以使用。哪一个.. 设置此窗口是否应在下一次使该窗口可见时显示在本机窗口系统的默认位置还是当

  • 问题内容: 从技术角度来看,这两个列表之间有什么区别?首先是lock的 java doc中提供的一个。其次是我的。 1。 2。 问题答案: 原因可以在以下文档的javadoc中找到: 实施注意事项 锁实现通常会限制哪些线程可以释放锁(通常只有锁的持有者才能释放该锁), 并且如果违反该限制,则可能引发(未经检查的)异常 。任何限制和异常类型都必须由那个Lock实现记录下来。 同样,a 可能会因未检查

  • 问题内容: 我正在寻找一个库来处理Java中的iCalendar数据。 首选具有良好对象模型的开源,文档完善的实现。iCal解析功能对我来说并不重要,但仍然很不错。 有人有建议吗? 问题答案: 去年,我在iCal4j(简介)上取得的成功有限。 在Java社区中,这似乎是进行医学工作的相当流行的选择。 如果我没记错的话,乍一看,API可能会使您感到困惑。但是,从长远来看,这是非常可靠的。 祝你好运,

  • 我的问题是,是否有推荐的JDK版本与pdfbox(2.0.19)一起使用,以及是否有我应该考虑的配置或GC参数来尽可能优化内存消耗?

  • 我有两个函数作为互斥锁和解锁: 我有这两个功能的原因是因为我不希望不同客户端之间的数据竞争,覆盖数据等等,这允许我锁定一段数据,修改它,然后解锁,以便其他客户端读取/更新。我没有使用postgres锁(表锁、行锁、咨询锁),因为我需要锁定多个事务的能力,而且因为我在程序中使用数据库池,所以我不能使用咨询锁,因为同时有多个会话连接到数据库,我无法控制哪一个锁/解锁 有没有更好的方法可以做到这一点(比

  • 问题内容: 我正在尝试从C#程序集(使用)动态运行.jar 。现在,可以从控制台应用程序运行: 但是,在一个程序集中,我不断收到“系统找不到指定的文件”的信息,必须将行更改为Java的完整路径,如下所示: 这显然不会。我需要一种动态(但声明式)确定Java安装位置的方法。 我开始考虑查找注册表,但是到那里时,我注意到版本有特定的键,甚至不能保证它们是数字的(例如“ HKEY_LOCAL_MACHI