import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 class Calculator extends JFrame  {
MenuBar menubar;
Menu menu1,menu2,menu3;
     CardLayout mycard;
     JTextField text;
 GridLayout grid;
static String s,str;
 static double a;     Calculator(String s)
     {
super( s);   Panel p=new Panel();
    Panel panel1=new Panel();
     Panel panel2=new Panel();
      Panel panel3=new Panel();
      add(panel1,BorderLayout.NORTH);
      add(panel3,BorderLayout.CENTER);
     add(panel2,BorderLayout.WEST);
   add(p,BorderLayout.SOUTH);
   panel2.setLayout(null);
   panel2.setBackground(Color.red);
   Button button1=new Button();
     Button button2=new Button();
       Button button3=new Button();
          Button button4=new Button();
       panel2.add(button1);
        panel2.add(button2);
      panel2.add(button3);
          panel2.add(button4);
            button1.setBounds(0, 40, 35, 20);
          button2.setBounds(0, 80, 35, 20);
            button3.setBounds(0, 120, 35, 20);
           button4.setBounds(0, 160, 35, 20);
              panel3.setLayout(null);
                Button button5=new Button();
     Button button6=new Button();
       Button button7=new Button();
       panel3.add(button5);
        panel3.add(button6);
         panel3.add(button7);
         button5.setBounds(50, 5, 70, 25);
            button6.setBounds(130, 5, 70, 25);
            button7.setBounds(210, 5, 70, 25);
   mycard=new CardLayout();
 JTextField text=new JTextField (20);
 menubar=new MenuBar();
  add(text,BorderLayout.NORTH);
   text.setHorizontalAlignment(JTextField.RIGHT);
   text.setText("0.");
   text.setEditable(false);
   menu1=new Menu("编辑");
     menu2=new Menu("查看");
       menu3=new Menu("帮助");
       menubar.add(menu1);
       menubar.add(menu2);
       menubar.add(menu3);
grid=new GridLayout(4,5);
p.setLayout(grid); Button b[]=new Button[20];
     for(int i=0;i<20;i++)
     {    String a[]={"7","8","9","/","C","4","5","6","X","S","1",
                    "2","3","-","%","0",".","←","+","="};
             b[i]=new Button(a[i]);              p.add(b[i]);     }    setBounds(0,0,300,200);
     setMenuBar(menubar  );
    setVisible(true);
    validate();
     }}
 public class Main {
    public static void main(String[] args) {
      Calculator calculator=new Calculator("计算器");
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }}
panel中的panel2显示不出,不知道为什么

解决方案 »

  1.   


    panel2.setLayout(null); <-- 把這行拿掉。
    panel2.setBounds(0,0,10,10); <--或是指定長寬。
      

  2.   

    add(panel1,BorderLayout.NORTH);
      add(panel3,BorderLayout.CENTER);
      add(panel2,BorderLayout.WEST);
    放在panel1,panel2,panel,之后,也就是
    setVisible(true);前就可以了,尽量避免刷新确保正确显示