的Java包不调整大小

问题描述:

我在此刻学习Java,并有以下问题:的Java包不调整大小

我加入我到JFrame的控制,然后包()显示之前。

这运行的应用程序,一切都非常好。

我想知道有没有办法阻止用户调整应用程序窗口的大小?

还有没有办法让JLabel中的图像随着用户更改应用程序窗口而展开?

目前,我把它作为:

constraints.fill = GridBagConstraints.BOTH; 
    constraints.anchor = GridBagConstraints.CENTER; 

,它只是中心的形象,我想能够扩大/缩小图像。

谢谢。

+0

我不需要设置我的框架不可改变。我总是在NetBeans IDE中使用Matisse。这是最好的和免费的GUI编辑器! – 2010-04-14 17:05:46

我想知道有没有办法阻止 用户从调整应用程序 窗口?

如果你不想让用户调整窗口的大小都那么你可以做

frame.setResizable (false); 



我不知道,这种技术可以与pack()同时成功使用。你当然应该尝试,但我记得有一个问题,如果你这样做:

frame.setResizable (false); 
pack(); 

然后pack()根本就没有做自己应该,如果你这样做:

pack(); 
frame.setResizable(false); 

,那么你的窗口变得稍后更窄一点,之后只有pack()。当然,可以找到一些解决方法(或者甚至只是我不好的经历)。

+0

this.setResizable(false);包();这工作。另一种方式是通过在控件周围引入一些填充来产生不同的结果。 – iTEgg 2010-04-14 17:12:13

+0

@ikurtz:很好!我用java 1.4试了一下,可能自那时起就有所改变。 – Roman 2010-04-14 17:24:04

+0

感谢您的帮助。即时通讯使用Java 1.6.0_17和NetBeans 6.8。很高兴它工作! – iTEgg 2010-04-14 17:26:30

对于第一个问题,您可以使用该方法setResizable(boolean)调整你的窗口停止用户:

frame.setResizable(false); 

我不使用GridBagLayout,所以我不能帮你的第二个问题。

+0

第二个问题与使用GridBagLayout无关,但如何在JLabel中缩放图像。 – jarnbjo 2010-04-14 17:03:25

为了防止调整窗口大小,您可以简单地在窗口或(J)框架上调用setResizable(false)

对于JLabel和图像,没有简单的方法可以根据图像的实际大小来缩放图像。如果您仅为图片使用标签(无文本),则可能更容易实现您自己的组件,您可以在其中自行绘制图像。

also is there a way to for the image in JLabel to expand as the user changes the application window? 

是的,你需要创建自己LabelUI类,并通过setUI()将其设置为您的标签。 在您的自定义LabelUI类中,您将必须覆盖getPreferredSize并根据需要绘制imageIcon。

据略有程序,你可能想看看BasicLabelUI源,了解如何做事。(http://www.java2s.com/Open-Source/Java-Document/Apache-Harmony-Java-SE/javax-package/javax/swing/plaf/basic/BasicLabelUI.java.htm

你可以过骑的JLabel的paintComponent() API创建自己的扩展JLabel类。