其实可以不用任何布局管理器的
setLayout(null);
然后用reshape()或rebound()函数自己放置控件

解决方案 »

  1.   

    偶给出以前写的代码
    ps;20分也太寒酸了吧--"
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class  Calculator extends JFrame
    {
    JButton a1 = new JButton("1");
    JButton a2 = new JButton("2");
    JButton a3 = new JButton("3");
    JButton a4 = new JButton("4");
    JButton a5 = new JButton("5");
    JButton a6 = new JButton("6");
    JButton a7 = new JButton("7");
    JButton a8 = new JButton("8");
    JButton a9 = new JButton("9");
    JButton a0 = new JButton("0");
    JButton minus = new JButton("+/-");
    JButton dot = new JButton(".");
    JButton plus = new JButton("+");
    JButton subtract = new JButton("-");
    JButton multiply = new JButton("*");
    JButton divide = new JButton("/");
    JButton remainder = new JButton("%");
    JButton reciprocal = new JButton("1/x");
    JButton equal = new JButton("=");
    JButton sqrt = new JButton("sqrt");
    JButton back = new JButton("Backspace");
    JButton ce = new JButton("CE");
    JButton cc = new JButton("C");
    JButton nu = new JButton();
    JButton mr = new JButton("MR");
    JButton mc = new JButton("MC");
    JButton ms = new JButton("MS");
    JButton mp = new JButton("M+");
    JTextField text = new JTextField("0.",20);
    JMenuBar menuBar = new JMenuBar(); public Calculator()
    {
    super("¼ÆËãÆ÷");
    //setSize(260,236);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel pane = new JPanel();
    JPanel subPane = new JPanel();
    JPanel subPane1 = new JPanel();
    JPanel interPane = new JPanel();
    JPanel subPane2 = new JPanel();
    JPanel subPane3 = new JPanel();
    pane.setLayout(new BorderLayout(12,12));
    pane.add(text,BorderLayout.NORTH);
    pane.add(subPane); subPane1.setLayout(new GridLayout(5,1));
    subPane1.add(nu);
    subPane1.add(mc);
    subPane1.add(mr);
    subPane1.add(ms);
    subPane1.add(mp);

    subPane2.setLayout(new GridLayout(1,3));
    subPane2.add(back);
    subPane2.add(ce);
    subPane2.add(cc); subPane3.setLayout(new GridLayout(4,5));
    subPane3.add(a7);
    subPane3.add(a8);
    subPane3.add(a9);
    subPane3.add(divide);
    subPane3.add(sqrt);
    subPane3.add(a4);
    subPane3.add(a5);
    subPane3.add(a6);
    subPane3.add(multiply);
    subPane3.add(remainder);
    subPane3.add(a1);
    subPane3.add(a2);
    subPane3.add(a3);
    subPane3.add(subtract);
    subPane3.add(minus);
    subPane3.add(reciprocal);
    subPane3.add(a0);
    subPane3.add(minus);
    subPane3.add(dot);
    subPane3.add(plus);
    subPane3.add(equal); interPane.setLayout(new BorderLayout(8,8));
    interPane.add(subPane2,BorderLayout.NORTH);
    interPane.add(subPane3,BorderLayout.CENTER);
    subPane.setLayout(new BorderLayout(8,8));
    subPane.add(subPane1,BorderLayout.WEST);
    subPane.add(interPane,BorderLayout.CENTER);

    setContentPane(pane); JMenu edit = new JMenu("±à¼­(E)");
    JMenu view = new JMenu("²é¿´(V)");
    JMenu help = new JMenu("°ïÖú(H)"); JMenuItem copy = new JMenuItem("¸´ÖÆ(C) Ctrl+C");
    JMenuItem paste = new JMenuItem("Õ³Ìù(V) Ctrl+V");
    JMenuItem t = new JMenuItem("±ê×¼ÐÍ(T)");
    JMenuItem s = new JMenuItem("¿ÆѧÐÍ(S)");
    JMenuItem i = new JMenuItem("Êý×Ö·Ö×é(I)");
    JMenuItem h = new JMenuItem("°ïÖúÖ÷Ìâ(H)");
    JMenuItem a = new JMenuItem("¹ØÓÚ¼ÆËãÆ÷(A)"); edit.add(copy);
    edit.add(paste);
    view.add(t);
    view.add(s);
    view.addSeparator();
    view.add(i);
    help.add(h);
    help.addSeparator();
    help.add(a); menuBar.add(edit);
    menuBar.add(view);
    menuBar.add(help); setJMenuBar(menuBar);
    pack();
    }
    public static void main(String[] args) 
    {
    Calculator cal = new Calculator();
    cal.show();
    }
    }
      

  2.   

    建议界面设计读用BorderLayout,具有最大的灵活性
      

  3.   

    能不能不用import javax.swing.*;
    只用import java.awt.*;和import java.awt.event.*;
    做出来?
    我还没学到SWING,现在只想用awt做这个计算器。
      

  4.   

    不要有学会awt再学swing的想法,因为swing并不是高级的awt。
    即使没接触过awt直接学swing也根本不会有什么困难。
      

  5.   

    在awt组件上加个J就ok了,然后把组件都放在内容窗格中,就ok了