用 panel做,把你要加上的组件先加入panel里面。然后在把PANEL加入到顶级容器里

解决方案 »

  1.   

    在jbuider里可以直接拖啊,,,,,
      

  2.   

    用panel做大布局。
    小的布局也用panel做好,然后加入大的布局
      

  3.   

    javakevin(小康)  请问你有没有现成的代码?有的话,请帮我发一段,只要加panel到顶级容器里的那段就可以了我姓康。 如果叫你小康的话,好象在叫我自己。呵呵。
      

  4.   

    请楼主留下e-mail,我吧我曾经做的基于堆栈的计算器发给你!
      

  5.   

    谢谢!~~~~
    [email protected]
      

  6.   

    要是用Panel的话,菜单就是单独的一行,不算到GridLayout 中的,而且菜单没在Panel中,而是在Frame中。
      

  7.   

    import java.awt.*;
    import java.applet.*;
    import java.applet.Applet;class Cal extends Frame{
    TextField outField;
    Panel p=new Panel();
    public Cal(){
    super("Little Calcalator");
    setLayout(new GridLayout(3,1));
    outField=new TextField();
    outField.setEditable(false);
    add(new DisplayPanel(outField));
    p.setLayout(new FlowLayout(FlowLayout.RIGHT));
    p.add(new ClearPanel(outField));
    p.add(new OperationPanel(outField));
    add(p);
    add(new NumPanel(outField));
    pack();
    resize(200,250);
    show();
    }

    public static void main(String args[]){
    new Cal();
    }
    public Insets insets(){
    return new Insets(30,20,10,20);
    }
    public boolean handleEvent(Event evt){
    if(evt.id==Event.WINDOW_DESTROY){
    System.exit(0);
    return true;
    }
    return false;
    }
    }class DisplayPanel extends Panel{
    TextField text;
    public DisplayPanel(TextField text){
    setLayout(new GridLayout(2,1));
    add(text);
    add(new Label("============================"));
    }
    }class NumPanel extends Panel{
    TextField text;
    static int value;
    public NumPanel(TextField text){
    int i;
    this.text=text;
    setLayout(new GridLayout(4,3,1,1));
    for(i=1;i<10;i++)
    add(new Button((new Integer(i)).toString() ));
    add(new Label());
    add(new Button("0"));
    add(new Label());
    }
    public boolean action(Event evt,Object arg){
    if(evt.target instanceof Button){
    String Title=(String)arg;
    value=value*10+new Integer(Title).intValue();
    text.setText(new Integer(value).toString());
    return true;
    }
    return false;
    }
    }class OperationPanel extends Panel{
    TextField text;
    String Title;
    static boolean yFlag; int x;
    int y;
    public OperationPanel(TextField text){
    this.text=text;
    setLayout(new GridLayout(2,3,1,1));
    add(new Button("+"));
    add(new Button("-"));
    add(new Button("*"));
    add(new Button("/"));
    add(new Button("="));
    }
    public boolean action(Event evt,Object arg){
    if(evt.target instanceof Button){
    x=(new Integer(text.getText())).intValue();
    if(yFlag){
    if(Title.equals("+")){
    x=y+x;
    }
    else if(Title.equals("-")){
    x=y-x;
    }
    else if(Title.equals("*")){
    x=y*x;
    }
    else if(Title.equals("/")){
    x=y/x;
    }
    }
    yFlag=true;
    y=x;
    Title=(String)arg;
    NumPanel.value=0;
    text.setText((new Integer(x)).toString());
    }
    return false;
    }
    }class ClearPanel extends Panel{
    TextField text;
    public ClearPanel(TextField text){
    this.text=text;
    setLayout(new FlowLayout(FlowLayout.CENTER));
    add(new Button("C"));
    add(new Button("CA"));
    }
    public boolean action(Event evt,Object arg){
    if(evt.target instanceof Button){
    String Title=(String)arg;
    if(Title.equals("C")){
    NumPanel.value=0;
    text.setText("0");
    }
    else if(Title.equals("CA")){
    OperationPanel.yFlag=false;
    NumPanel.value=0;
    text.setText("0");
    }
    return true;
    }
    return false;
    }
    }

    偶会的不多,不过这个例子是通的!