2014-04-03 45 views
1

我已经基于Swing应用程序neatbeans制成,想让它根据屏幕分辨率即Jframes及其组件也调整根据屏幕大小,让我们看到在所有的帧的基于Swing应用程序任何决议。 Thankx提前是否有可能进行独立的屏幕分辨率

+2

是的情况下,您使用(不是绝对)LayoutManager – mKorbel

+1

可能重复[自动调整大小的摆动元素以适应容器的大小](http://stackoverflow.com/questions/7412982/auto-resize-swing-元素到适合容器大小) – BackSlash

+0

究竟是哪一个?是否有可能转换当前neatbeam应用独立或我必须redevlope? – Shivling

回答

1

在工作中我们也有过同样的问题,thusfar解决了它的一部分。在我们的例子中,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); 
} 

以下将是我们改变字体大小代码:

要记住210

一个重要的事情,是所提供的参数参数应该在你的参考解决方案。当然,这绝不是一个完美的解决方案。但一个好的开始。

+1

Thankx这会帮助我 – Shivling

0

感谢名单很多关于你的时间,

像乔根·隆格伦解决方案,我已经编辑了我的NetBeans的initComponents();获得解决方案变得非常复杂,不容易编辑我的应用程序。实际上它的好方案。

此外,我发现了2愚蠢的解决方案,如: 我已经开发我的帧所有可能的决议和根据目前的决议调用。我知道它非常糟糕的想法,但我们认为是一种方式。

最后1, 我在很小的分辨率为800 * 600发展我的框架,默认情况下它的任何决议,运行没有问题

我的应用程序已经运行及Made in NetBeans中,钢铁我不能从获得帮助布局管理器..

,寻找最佳的解决方案。钢材与Jörgen解决方案一起工作。 我写的解决方案有相同的问题,他们之间的方式。