java - Swing 不定的全屏窗口系统

标签 java swing

我正在开发一个需要能够在单个显示器和多个显示器上运行的应用程序。我目前只知道两种方法来完成我需要的,但都不是理想的。

如果我在所有监视器上创建一个 JFrame,我可以将 JInternalFrames 用于我的可移动窗口。不利的一面是,当我在不同尺寸/分辨率的显示器上时,这种方法将不起作用,因为工具栏或我添加到 JFrame 的任何其他内容都不会对齐,而且我可能会看到一些操作系统。

另一种方法是为每个图形设备创建一个新的 JFrame,并使用 JDialogs 作为我的窗口。这里的缺点是我对 JDialogs 的控制较少并且不能限制移动。理想情况下,我希望能够限制 JDialog 的位置,使其不会与我的工具栏重叠。

有没有更好的方法?

最佳答案

您可以采用后一种方法,只需向每个 JDialog 添加一个 ComponentListener:

final JDialog dialog = new JDialog();
dialog.addComponentListener(new ComponentAdapter()
{
    @Override
    public void componentMoved(ComponentEvent e)
    {
        if (dialog.getBounds().intersects(toolbar.getBounds()))
            moveToAvoidConflict(dialog);
    }
}

并且您的 moveToAvoidConflict() 方法会向上、向下、向左或向右移动对话框,使其不再与您的工具栏相交。

关于java - Swing 不定的全屏窗口系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483132/

相关文章:

java - 使用 jhipster 升级卡在命令提示符处 "May JHipster anonymously report"

java - 在 Lucee 上安装 Cassandra Java 驱动程序

java - 如何从jList更改为JTable(DB中的数据有很多列和行)

java - 单击按钮时是否可以调用不同的类

Java JTextField 窗口大小

java - JPanel 何时绘制(或重新绘制)其子组件?

java - JBoss 4.2.3 - 如何查找 jar 文件的路径

java - 如何声明一个ArrayList?

java - 我可以从另一个使用 @Autowired 的项目调用方法吗?

java - 使用 java Swing 中的 Jframe 调整 Jpanel 的大小