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显示不出,不知道为什么
panel2.setLayout(null); <-- 把這行拿掉。
panel2.setBounds(0,0,10,10); <--或是指定長寬。
add(panel3,BorderLayout.CENTER);
add(panel2,BorderLayout.WEST);
放在panel1,panel2,panel,之后,也就是
setVisible(true);前就可以了,尽量避免刷新确保正确显示