由于布局会使组件的大小发生改变所以建议使用NoneLayout
也就是使用组件钢性,比如下面的代码,
//NonLayoutDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class NonLayoutDemo {
     
    public NonLayoutDemo() {
    
     JFrame f = new JFrame();
    
        Container contentPane = f.getContentPane();
        contentPane.setLayout(null);//这里把布局改变成NONE
        JButton b1 = new JButton("first");
        contentPane.add(b1);
        JButton b2 = new JButton("second");
        contentPane.add(b2);        b1.setBounds(15, 10, 80, 30);//这里设组件的大小,和在组件上的坐标
        b2.setBounds(80, 50, 90, 40);//这里设组件的大小,和在组件上的坐标     f.setTitle("NoLayout");
        f.setSize(200,130);
        f.setVisible(true);
        
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                    System.exit(0);
            }
        });
    }    public static void main(String args[]) {
    
        NonLayoutDemo b = new NonLayoutDemo();
        
    }
}

解决方案 »

  1.   

    不好意思我没说清楚,我想写一个类继承jpanel,我希望这个类能根据自身的情况调整大小,但我载类里用setProperSize()调整大小后控制这个类的Layout不会自动相应变化,(因为在jpanel的继承类里不能调用控制他的layout做doLayout()),如何让Layout知道它的组件变化了,就像jButton,当调用setText后大小会随之改变,我想jbutton里应该有函数可以通知控制他的Layout它大小的变化,还有哪位大哥知道哪有这方面的书下载,谢了
      

  2.   

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            Dimension windowSize = getPreferredSize();
            // Put image at the middle of the screen
            setLocation(screenSize.width/2 - (windowSize.width/2),
                        screenSize.height/2 - (windowSize.height/2));
      

  3.   

    去查一下Component类!validate()!
      

  4.   

    好像还没有你所说的这样智能!layout只能管理好owner组件内的组件,不能改变宿主组件的大小