我正在尝试修改老师给我的计算器程序。它应该由主程序和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);
}
}
这是数字程序的一部分
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...
}
}