Dimension可以完成这个功能。
每个组件,都可以设置它的最大的Dimension(setMaxDemiension?)、最小的Dimension(setMinDemiension?),好像还有最合适的Dimension,通常情况下,最大和最小的值是一样的话,好像大小就固定(但也有特例)。
具体写法我忘了,好久没写这样的界面了。

解决方案 »

  1.   

    因为是初学JAVA请大家能将的明白些.
      

  2.   

    你只要设置好Constraints中的值久可以了。
    比如:
    reportPane1.add(reportDetailPane, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
                ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
      

  3.   

    BorderLayout b = new BorderLayout();
    frame.getContentPane.setLayout(b);
    JPanel panel1 = new Jpanel()
    JPanel panel2 = new Jpanel()
    JPanel panel3 = new Jpanel()panel1和panel3用FlowLayoutframe.getContentPane.add(panel1, BorderLayout.NORTH);
    frame.getContentPane.add(panel2, BorderLayout.CENTER);
    frame.getContentPane.add(panel3, BorderLayout.SOUTH);ok!!  :)
      

  4.   

    import java.awt.*;
    import javax.swing.*;public class MainFm extends JFrame {
    private JLabel l1, l2;
    private JTextField t1, t2;
    private JTextArea ta;
    private JButton b1, b2;
    public MainFm() {
    fmInit();
    }
    private void fmInit() {

    l1 = new JLabel("l1");
    l2 = new JLabel("l2");
    t1 = new JTextField(20);
    t2 = new JTextField(20);
    b1 = new JButton("b1");
    b2 = new JButton("b2");
    ta = new JTextArea(10, 20);

    Container c = this.getContentPane();
    c.setLayout(new BorderLayout());
    c.add(new Pan1(), BorderLayout.NORTH);
    c.add(new Pan2(), BorderLayout.SOUTH);
    c.add(ta);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    };
    private class Pan1 extends JPanel {
    public Pan1() {
    add(l1);
    add(t1);
    add(b1);
    }
    }
    private class Pan2 extends JPanel {
    public Pan2() {
    add(l2);
    add(t2);
    add(b2);
    }
    }

    public static void main(String[] args) {
    new MainFm().setVisible(true);
    }
    }