我在JFrame上加了一个JLabel,然后用setSize()设定了长宽,但是,但JLable的文字有变化时,它的长宽也跟着变,导致别的控件由跟着被挤压得改变了原来的位置,请问,怎样能把握label的长宽严格固定?谢谢。

解决方案 »

  1.   

    组件的大小、位置可以由两种方式来设定:Layout和自定义的大小位置,Layout优先级高于自定义的大小位置。所以只有你设置了使用layout,你的大小设置将不会起作用。
    layout的对组件大小判断的依据是来自于组件自身定义的PreferredSize,而自定义大小改变的是size/bounds。
    解决方法:
    1. 通过setPreferredSize()指定组件大小;
    2. setLayout(null),然后逐个手工调整调整的大小位置。
      

  2.   

    谢谢楼上的。不过我试过,还是不行,用setPreperredSize(),会搞到label中的文字全部消失了,而且,label一样会改变大小。
     
    我的界面其实很简单的,只有三个控件,左边一个按钮,中间一个label,右边也一个按钮,现在label的文字一改变(有时文字多些,有时少些),label就会被撑大,令到左按钮向左移,右按钮就往右移了,我用的是GridBagLayout。