我想创建一个具有3个文本字段和2个按钮的JAVA窗口

时间:2019-05-16 12:23:00

标签: java

我想创建一个包含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();
 }
}

2 个答案:

答案 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中显示结果。

当点击除法时,它会将数字除。

enter image description here