我正在开发一个需要能够在单个显示器和多个显示器上运行的应用程序。我目前只知道两种方法来完成我需要的,但都不是理想的。
如果我在所有监视器上创建一个 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/