我想创建一个包含3个文本字段和2个按钮的简单Java窗口。我希望按钮执行减法和除法运算,以吸收用户的输入。我在if-else条件下的actionPerformed方法中需要帮助。我不知道在if-else括号中写什么条件。
我编写了以下代码:
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;
class Event extends Frame implements ActionListener
{
TextField tf, tf1, tf2;
Event()
{
tf=new TextField();
tf.setBounds(60,50,170,20);
tf1=new TextField();
tf1.setBounds(60,70,170,20);
tf2=new TextField();
tf2.setBounds(60,90,170,20);
Button b=new Button("Subtraction");
b.setBounds(100,120,80,30);
b.addActionListener(this);
Button b1=new Button("Division");
b1.setBounds(100,160,80,30);
b1.addActionListener(this);
add(b);
add(b1);
add(tf);
add(tf1);
add(tf2);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(ActionListener(Subtraction))
{
int a,b,c;
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
tf.setText("Enter first value: "+a);
b=sc.nextInt();
tf1.setText("Enter second value: "+b);
c=b-a;
tf2.setText("Result is: "+ c);
}
else
{
int d,f,g;
Scanner sc= new Scanner(System.in);
d=sc.nextInt();
tf.setText("Enter first value: "+d);
f=sc.nextInt();
tf1.setText("Enter second value: "+f);
g=d/f;
tf2.setText("Result is: "+g);
}
}
public static void main(String args[])
{
new Event();
}
}
答案 0 :(得分:0)
您应该检查ActionEvent
传递给您的actionPerformed
方法中。 ActionEvent
包含有关操作源的信息。一种可能的方式是使用“操作命令”:
final String subtractionCommand = "Subtraction";
...
Button b=new Button("Subtraction");
b.setActionCommand(subtractionCommand);
b.setBounds(100,120,80,30);
b.addActionListener(this);
...
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals(subtractionCommand))
{
...
}
}
或者通过使用getSource()
方法,这有点难看,但是如您所见,它将返回您在其上调用侦听器的实际对象:
public void actionPerformed(ActionEvent e)
{
if(((JButton) e.getSource()).getText().equals("Subtraction")) {
{
...
}
}
作为最后的建议,我想在主类上删除ActionListener的实现,并为两个按钮创建2个不同的侦听器,这样您就可以将每个动作的代码分开,如果您打算添加其他按钮,或从应用程序中其他位置调用相同的操作。
答案 1 :(得分:0)
这是使用两个不同的动作侦听器的解决方案:
import java.awt.*;
import java.awt.event.*;
public class Event extends Frame {
TextField tf, tf1, tf2;
Event()
{
tf=new TextField();
tf.setBounds(60,50,170,20);
tf1=new TextField();
tf1.setBounds(60,70,170,20);
tf2=new TextField();
tf2.setBounds(60,90,170,20);
Button b=new Button("Subtraction");
b.setBounds(100,120,80,30);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int num1 = Integer.parseInt(tf.getText());
int num2 = Integer.parseInt(tf1.getText());
tf2.setText(Integer.toString(num1 - num2));
}
});
Button b1=new Button("Division");
b1.setBounds(100,160,80,30);
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int num1 = Integer.parseInt(tf.getText());
int num2 = Integer.parseInt(tf1.getText());
tf2.setText(Integer.toString(num1 / num2));
}
});
add(b);
add(b1);
add(tf);
add(tf1);
add(tf2);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public static void main(String args[])
{
new Event();
}
}
当您单击减法时,它会减去文本框1和文本框2中的数字,并在文本框3中显示结果。
当点击除法时,它会将数字除。