我有基于摇摆的应用程序,它是根据屏幕分辨率制作的,即Jframes及其组件也根据屏幕大小调整大小,以便我们可以看到任何分辨率的所有帧。 提前谢谢
答案 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解决方案合作。 我写的解决方案对他们来说有相同的问题。