回 帖 发 新 帖 刷新版面

主题:计算器的显示问题

老师让做个计算器,我的界面已经搭好,可是文本框里就是不出显示,哪个好心人,帮我看下代码,要怎么写,现在是卡在这地方动不了了.拜托!!!!下面是代码

/*
 *设计简易Windows样式的计算器
 *学习AWT监听的使用
 *框架的制作
 **/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Calculator extends JFrame {
    private JFrame f;
    private MenuBar p0;
    private Menu m1;
    private Menu m2;
    private Menu m3;
    private MenuItem mi1;
      private MenuItem mi2;
    private String keystoke[] = {"7","8","9","/","sqrt","4","5","6","*","%",
                                    "1","2","3","-","1/x","0","+/-",".","+","="};
    private Button b[] = new Button[keystoke.length];//获取按钮
    private Panel p1;
    private Panel p2;
    private JTextField t;
    String tmp = "";

    //设置面板
    public void start() {
        JFrame f = new JFrame("计算器");
        //菜单栏
        MenuBar p0 = new MenuBar();
        Menu m1=new Menu("编辑(E)");
        Menu m2=new Menu("查看(V)");
        Menu m3=new Menu("帮助(H)");        
        p0.add(m1);
        p0.add(m2);
        p0.add(m3);
        MenuItem mi11 = new MenuItem("复制 (Crtl+C)");
        MenuItem mi12 = new MenuItem("粘贴 (Crtl+V)");
        MenuItem mi13 = new MenuItem("退出(Crtl+Q)");
        m1.add(mi11);
        m1.add(mi12);
        m1.addSeparator();
        m1.add(mi13);
        MenuItem mi21 = new MenuItem("标准型(T)");
        MenuItem mi22 = new MenuItem("科学型(S)");
        MenuItem mi23 = new MenuItem("数字分组(I)");
        m2.add(mi21);
        m2.add(mi22);
        m2.addSeparator();
        m2.add(mi23);
        MenuItem mi31 = new MenuItem("主题帮助(H)");
        MenuItem mi32 = new MenuItem("关于计算器(A)");
        m3.add(mi31);
        m3.add(mi32);
        f.setSize(250,250);
        f.setLocation(500,200);
    //    f.setBackground(Color.gray);
        f.setVisible(true);
        JTextField t = new JTextField(16);
        //设置文本框的初始显示
        t.setText("0.");
        t.setHorizontalAlignment(JTextField.RIGHT);//从右边开始显示;
        //setHorizontalAlignment方法的作用是让标签中的文字内容在标签内按照指定的方式对齐
        t.setForeground(Color.blue);        
        t.setEditable(false);
        //计算区
        Panel p1 = new Panel();
        Button clear = new Button(" 清 除 ");
        p1.add(t);
        p1.add(clear);
        p1.setLayout(new FlowLayout());
        //数字区
        Panel p2 = new Panel();
        p2.setLayout(new GridLayout(4,5,5,5));
            for(int i = 0; i < keystoke.length; i++) {
            b[i] = new Button(keystoke[i]);
            p2.add(b[i]);
            }
        //添加Panel块
        f.setMenuBar(p0);
        f.add(p1);    
        f.add(p2);
        f.add(p1,BorderLayout.NORTH);
        f.add(p2,BorderLayout.CENTER);
        
        //用内部类增加事件监听器,点"X"关闭窗口;
        f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                    }
                });
        f.setResizable(false);//全屏无效
    }
    
        //监听按钮
        class Listener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
            
                String x = e.getActionCommand();
                char aa = x.charAt(0);
                if(aa >= '0' && aa < '9') {
                    t.setText(t.getText() + x);
                    
                    } else if(x.equals("+")){
                    
                    }
            }
            
            }    
        //    
        public static void main(String[] args) {
            Calculator cr= new Calculator();
            cr.start();
            }
    }

回复列表 (共2个回复)

沙发

虽然没时间帮你试程序,不过建议你用JLabel来显示计算结果

板凳

是在这句话上用JLable吗
t.setText(t.getText() + x);

我来回复

您尚未登录,请登录后再回复。点此登录或注册