是否可以使基于Swing的应用程序独立于屏幕分辨率

时间:2014-04-03 12:51:59

标签: java swing jframe screen resolution

我有基于摇摆的应用程序,它是根据屏幕分辨率制作的,即Jframes及其组件也根据屏幕大小调整大小,以便我们可以看到任何分辨率的所有帧。 提前谢谢

2 个答案:

答案 0 :(得分:1)

在工作中,我们也遇到了同样的问题并解决了部分问题。在我们的例子中,JFrame是屏幕的大小(不可调整大小)。这意味着我们只需要设置字体的大小(以及JComponents的其他与分辨率相关的方面)。

但是,如果您可以调整JFrame的大小,只要更改JFrame的大小(例如,使用其方法addComponentListener(ComponentListener)),就可以通过遍历其JComponents的层次结构来更新JComponents。

现在解决方案本身。如果您提供参考分辨率,除了您当前的分辨率。那么你真正需要做的就是扩大或缩小,基于哪一个更大。

我们将参考分辨率定义为宽度800和高度600.您可以通过以下代码轻松获得当前分辨率(仅显示如何获取宽度部分):

GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode().getWidth();

我们用来改变宽度的代码如下(相同的概念适用于高度):

public static synchronized int getWidthForCurrentResolution(int width) {
    return (int)((currentResolutionWidth / referenceResolutionWidth) * width);
}

以下是我们更改字体大小的代码:

public static synchronized int getFontSizeForCurrentResolution(int fontSize) {
    return (int)(Math.min(currentResolutionHeight / referenceResolutionHeight, currentResolutionWidth / referenceResolutionWidth) * fontSize);
}

要记住的一件重要事情是,提供的参数参数应该在您的参考分辨率中。当然,这绝不是一个完美的解决方案。但是一个好的开始。

答案 1 :(得分:0)

Thanx很多时候,

像JörgenLundgren解决方案一样,我编辑了我的netbeans initComponents();获得解决方案哪个成为非常复杂,不容易为我的应用程序编辑。实际上它很好的解决方案。

我也发现了两个愚蠢的解决方案: 我已根据目前的决议制定了所有可能的解决方案。我知道这是一个非常糟糕的想法,但我们认为是一种方式。

最后1, 我用非常小的分辨率800 * 600开发我的帧,默认情况下它可以在没有问题的情况下运行任何分辨率

我的应用程序已经在netbeans中运行和制作,Steel我无法从布局管理员那里获得帮助..

寻找最佳解决方案。钢铁与Jörgen解决方案合作。 我写的解决方案对他们来说有相同的问题。