import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;public class CalculatorDemo implements ActionListener {
InputPanel ip;
CalculatorPanel cp;
// static JRadioButton r1,r2,r3,r4; CalculatorDemo(){
JFrame f = new JFrame("欢迎使用计算机");
cp = new CalculatorPanel();
ip = new InputPanel();
ip.init();
cp.init(this);
f.setLayout(new BorderLayout());
f.add(cp, BorderLayout.SOUTH);
f.add(ip, BorderLayout.NORTH);
f.setSize(350, 130);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
System.out.print("yes");
} public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double num1 = Double.parseDouble(ip.getNum1());
double num2 = Double.parseDouble(ip.getNum2());
if(cp.r1.isSelected()){
double res = num1 + num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r2.isSelected()){
double res = num1 - num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r3.isSelected()){
double res = num1 * num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r4.isSelected()){
double res = num1/num2;
ip.t3.setText(String.valueOf(res));
}
}
public static void main(String[] args){
CalculatorDemo cal = new CalculatorDemo();
System.out.print(cal.ip.getNum1());
}
}class CalculatorPanel extends InputPanel{
JRadioButton r1, r2, r3, r4; void init(CalculatorDemo cd) {
setLayout(new GridLayout(1, 5));
JRadioButton r1 = new JRadioButton("加");
JRadioButton r2 = new JRadioButton("减");
JRadioButton r3 = new JRadioButton("乘");
JRadioButton r4 = new JRadioButton("除");
JButton y = new JButton("运算");
ButtonGroup b = new ButtonGroup();
b.add(r1);
b.add(r2);
b.add(r3);
b.add(r4);
b.add(y);
add(r1);
add(r2);
add(r3);
add(r4);
add(y); y.addActionListener(cd);
}
}class InputPanel extends JPanel {
JTextField t1, t2, t3; void init() {
t1 = new JTextField("", 3);
t2 = new JTextField("", 3);
t3 = new JTextField("", 3);
setLayout(new GridLayout(3, 2));
add(new JLabel("操作数1"));
add(t1);
add(new JLabel("操作数2"));
add(t2);
add(new JLabel("结果"));
add(t3);
} public String getNum1() {
return t1.getText();
} public String getNum2() {
return t2.getText();
}
}
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;public class CalculatorDemo implements ActionListener {
InputPanel ip;
CalculatorPanel cp;
// static JRadioButton r1,r2,r3,r4; CalculatorDemo(){
JFrame f = new JFrame("欢迎使用计算机");
cp = new CalculatorPanel();
ip = new InputPanel();
ip.init();
cp.init(this);
f.setLayout(new BorderLayout());
f.add(cp, BorderLayout.SOUTH);
f.add(ip, BorderLayout.NORTH);
f.setSize(350, 130);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
System.out.print("yes");
} public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double num1 = Double.parseDouble(ip.getNum1());
double num2 = Double.parseDouble(ip.getNum2());
if(cp.r1.isSelected()){
double res = num1 + num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r2.isSelected()){
double res = num1 - num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r3.isSelected()){
double res = num1 * num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r4.isSelected()){
double res = num1/num2;
ip.t3.setText(String.valueOf(res));
}
}
public static void main(String[] args){
CalculatorDemo cal = new CalculatorDemo();
System.out.print(cal.ip.getNum1());
}
}class CalculatorPanel extends InputPanel{
JRadioButton r1, r2, r3, r4; void init(CalculatorDemo cd) {
setLayout(new GridLayout(1, 5));
JRadioButton r1 = new JRadioButton("加");
JRadioButton r2 = new JRadioButton("减");
JRadioButton r3 = new JRadioButton("乘");
JRadioButton r4 = new JRadioButton("除");
JButton y = new JButton("运算");
ButtonGroup b = new ButtonGroup();
b.add(r1);
b.add(r2);
b.add(r3);
b.add(r4);
b.add(y);
add(r1);
add(r2);
add(r3);
add(r4);
add(y); y.addActionListener(cd);
}
}class InputPanel extends JPanel {
JTextField t1, t2, t3; void init() {
t1 = new JTextField("", 3);
t2 = new JTextField("", 3);
t3 = new JTextField("", 3);
setLayout(new GridLayout(3, 2));
add(new JLabel("操作数1"));
add(t1);
add(new JLabel("操作数2"));
add(t2);
add(new JLabel("结果"));
add(t3);
} public String getNum1() {
return t1.getText();
} public String getNum2() {
return t2.getText();
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JRadioButton r1 = new JRadioButton("加");
JRadioButton r2 = new JRadioButton("减");
JRadioButton r3 = new JRadioButton("乘");
JRadioButton r4 = new JRadioButton("除");~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这样一来,r1,r2,r3,r4代表的就是init的局部变量,而不是你的成员变量了,一旦init运行结束,它们就不复存在了!你的成员变量就是没有创建实体的空对象了。还有,你的 JButton y = new JButton("运算");语句定义的也是init内部的局部变量,它同样在init运行结束就消失了!应当把它定义为成员变量。
把这两个地方改过来就好了。如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;public class CalculatorDemo extends JFrame implements ActionListener {
InputPanel ip;
CalculatorPanel cp;
// static JRadioButton r1,r2,r3,r4; CalculatorDemo(){
super("欢迎使用计算机");
cp = new CalculatorPanel();
ip = new InputPanel();
ip.init();
cp.init(this);
setLayout(new BorderLayout());
add(cp, BorderLayout.SOUTH);
add(ip, BorderLayout.NORTH);
setSize(350, 130);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
System.out.print("yes");
} public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double num1 = Double.parseDouble(ip.getNum1());
double num2 = Double.parseDouble(ip.getNum2());
if(cp.r1.isSelected()){
double res = num1 + num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r2.isSelected()){
double res = num1 - num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r3.isSelected()){
double res = num1 * num2;
ip.t3.setText(String.valueOf(res));
}
if(cp.r4.isSelected()){
double res = num1/num2;
ip.t3.setText(String.valueOf(res));
}
}
public static void main(String[] args){
CalculatorDemo cal = new CalculatorDemo();
System.out.print(cal.ip.getNum1());
}
}class CalculatorPanel extends InputPanel{
JRadioButton r1, r2, r3, r4; JButton y;
ButtonGroup b = new ButtonGroup(); void init(CalculatorDemo cd) {
setLayout(new GridLayout(1, 5));
r1 = new JRadioButton("加");
r2 = new JRadioButton("减");
r3 = new JRadioButton("乘");
r4 = new JRadioButton("除");
y = new JButton("运算");
b.add(r1);
b.add(r2);
b.add(r3);
b.add(r4);
add(r1);
add(r2);
add(r3);
add(r4);
add(y); y.addActionListener(cd);
}
}class InputPanel extends JPanel {
JTextField t1, t2, t3; void init() {
t1 = new JTextField("", 3);
t2 = new JTextField("", 3);
t3 = new JTextField("", 3);
setLayout(new GridLayout(3, 2));
add(new JLabel("操作数1"));
add(t1);
add(new JLabel("操作数2"));
add(t2);
add(new JLabel("结果"));
add(t3);
} public String getNum1() {
return t1.getText();
} public String getNum2() {
return t2.getText();
}
}