【发布时间】:2017-09-05 13:21:13
【问题描述】:
上下文
我正在尝试使用 JFrame 和 事件处理 构建一个百分比计算器,方法是使用空白文本字段和“输入”按钮并显示答案取决于他们单击的按钮(每个按钮有两种不同的计算)。
问题
问题是,当我将 JOptionPane.showMessageDialog 行放入 if/else if 语句(全部在 actionPerformed 方法中)时,程序运行,但单击按钮没有任何作用。但如果我把它放在语句之外,它会说 answer 变量未声明。
我意识到百分比计算器可以用一百万种其他更简单的方法来完成,但这只是我的想法,并想看看我是否可以做到(我是一个完全的初学者)。
代码
public class PercentageCalc extends JFrame{
private JTextField item2, item4, item5, item7;
private JButton button, button2;
public PercentageCalc(){
super("Percentage Calculator");
setLayout(new FlowLayout());
JLabel item1 = new JLabel("What is");
add(item1);
JTextField item2 = new JTextField(3);
add(item2);
JLabel item3 = new JLabel("% of");
add(item3);
JTextField item4 = new JTextField(2);
add(item4);
button = new JButton("Enter");
add(button);
JLabel spacer = new JLabel(" ");
add(spacer);
JTextField item5 = new JTextField(3);
add(item5);
JLabel item6 = new JLabel("is what % of");
add(item6);
JTextField item7 = new JTextField(3);
add(item7);
button2 = new JButton("Enter");
add(button2);
thehandler handler = new thehandler();
button.addActionListener(handler);
button2.addActionListener(handler);
}
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String strx;
String stry;
double x, y, answer;
if(e.getSource()==button){
strx = item2.getText();
stry = item4.getText();
x = Double.parseDouble(strx);
y = Double.parseDouble(stry);
answer = y * 0.01 * x;
JOptionPane.showMessageDialog(null, answer);
}
else if(e.getSource()==button2){
strx = item5.getText();
stry = item7.getText();
x = Double.parseDouble(strx);
y = Double.parseDouble(stry);
answer = x/y*100;
JOptionPane.showMessageDialog(null, answer);
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖minimal reproducible example 或Short, Self Contained, Correct Example。
标签: java swing if-statement jframe joptionpane