怎么把一个JLabel固定住,具体情况,我定义了一个JLabel内容为一行英文“A Simple Editor”但是一旦我改变JLabel上面的字体,JLabel为了适应字体的大小,就会改变JLabel本身的大小,我想问一下能不能把JLabel的大小固定
p.s.我试了setSize()  setMinimumSize() 都没有效果,

解决方案 »

  1.   

    public class LabelTest extends JFrame{
        
        private JLabel jLabel = null;
        
        public LabelTest(){
            super();
            intital();
        }
        
        private void intital(){
            
            this.setSize(800,600);
            this.getContentPane().setLayout(new FlowLayout());
            
            this.getContentPane().add(getLabel("Test LabelXXXXXXXXXXXXXXXXXXX"));
            
        }    private JLabel getLabel(String str) {
            if (jLabel == null) {
                jLabel = new JLabel(str);
            }
            
            Font font = new Font("Times New Roman",Font.BOLD,8);
            
            //Pay Attention To This Row
            jLabel.setPreferredSize(new Dimension(100,50) );
            
            jLabel.setBorder(BorderFactory.createEtchedBorder());
            
            return jLabel; 
        }
        
        public static void main(String[] args) {
            
            final LabelTest jFrame = new LabelTest();
            
            jFrame.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent event) {
        jFrame.dispose();
    System.exit(0);
    }
    });
            
    jFrame.setVisible(true);    }
    }给你写了个Sample,在我写GUI的时候,发现从JComponent继承的setSize方法经常是无效的,使用setPreferredSize(Dimension dim)同样可以达到目的,原因不明,望楼下的补充……