Java GUI:修改计算器程序

时间:2011-03-21 04:30:14

标签: java calculator

我正在尝试修改老师给我的计算器程序。它应该由main程序和GUI程序组成。我唯一的问题是如何处理事件。如你看到的 我创建了除主程序之外的Numerics类。我想要发生的是,当我点击一个数字时,它应该将数值从数字程序抛出到主程序中NorthPanel类的文本字段。但我不知道怎么做。谁能给我任何关于如何做到这一点的想法?

这是主程序的一部分

public class NorthPanel extends JPanel {
    private JTextField display;
    private JLabel filler;

    public NorthPanel() {
    //receive the thrown value from Numerics program to be displayed
        setLayout(new BorderLayout());
        String calcTF="0.";
        display = new JTextField(calcTF);
        display.setEditable(false);
        display.setFont(new Font("Century Gothic",Font.BOLD,19));
        display.setHorizontalAlignment(JTextField.RIGHT);                                   
        add(display,BorderLayout.CENTER);                   
    }
}

public class CenterPanel extends JPanel {

    private Numerics numeric;
    private Operations operator;
    private Functions function;

    public CenterPanel() {
        setLayout(null);

        numeric = new Numerics();
        numeric.setBounds(5,5,150,150);

        operator = new Operations();
        operator.setBounds(158,5,45,150);

        function = new Functions();
        function.setBounds(204,5,55,150);

        add(numeric);               
        add(operator);
        add(function,0);
    }
}

这是Numerics计划的一部分

public class Numerics extends JPanel implements ActionListener
{
    private JButton c7;
    String value="";
    public Numerics() 
    {
        UIManager.put("Button.background", Color.gray);
        setLayout(new GridBagLayout());

        GridBagConstraints gbc=new GridBagConstraints();
        gbc.weightx = 1.0;
        gbc.weighty = 1.0;
        gbc.fill = GridBagConstraints.BOTH;
        gbc.insets = new Insets(0,3,5,3);

        c7=new JButton("7");
        c7.setFont(new Font("Arial",Font.BOLD,20));
        c7.setBorder(BorderFactory.createRaisedBevelBorder());
        gbc.gridx=0;
        gbc.gridy=0;
        add(c7,gbc);
        c7.addActionListener(this);
public void actionPerformed(ActionEvent ae1)
    {
        if(ae1.getSource()==c7)
        {
            value+="7";
            //throw the value to display in the NorthPanel...
        }
    }

1 个答案:

答案 0 :(得分:1)

了解Introduction to Event Listeners&特别是Java Tutorial的How to Write an Action Listener部分。