【发布时间】:2018-06-10 04:11:43
【问题描述】:
用户必须在文本字段中输入数字。当用户按下 Enter 键时,该数字应从文本字段中删除并添加到 ArrayList。当用户单击“计算”按钮时,程序必须计算结果并将其投影到第二个文本字段。当用户单击“重置”时按钮,必须删除文本字段上的文本并清除 ArrayList。 我将 ActionListener 添加到 btnCalc,但是当我单击它们时,TextField 上没有任何变化
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class AddMult extends JFrame implements KeyListener, ActionListener{
private JLabel lblEnterNum;
private JTextField txtEnterNum;
private JRadioButton radBtnAdd;
private JRadioButton radBtnMul;
private JButton btnCalc;
private JButton btnReset;
private JLabel lblResult;
private JTextField txtResult;
public AddMult() {
setSize(300, 300);
lblEnterNum=new JLabel();
lblEnterNum.setText("Enter a number:");
lblEnterNum.setSize(100,20);
lblEnterNum.setLocation(100, 20);
add(lblEnterNum);
lblEnterNum.setVisible(true);
txtEnterNum = new JTextField();
txtEnterNum.setSize(90,20);
txtEnterNum.setLocation(105, 60);
add(txtEnterNum);
txtEnterNum.setVisible(true);
txtEnterNum.addKeyListener(this);
JRadioButton radBtnAdd = new JRadioButton();
radBtnAdd.setText("Add");
radBtnAdd.setSize(70,50);
radBtnAdd.setLocation(80, 80);
radBtnAdd.setSelected(true);
add(radBtnAdd);
JRadioButton radBtnMul = new JRadioButton();
radBtnMul.setText("Multiply");
radBtnMul.setSize(100,50);
radBtnMul.setLocation(160, 80);
add(radBtnMul);
ButtonGroup group = new ButtonGroup();
group.add(radBtnAdd);
group.add(radBtnMul);
btnCalc= new JButton();
btnCalc.setText("Calculate");
btnCalc.setLocation(70, 140);
btnCalc.setSize(80, 40);
add(btnCalc);
btnReset=new JButton();
btnReset.setText("Reset");
btnReset.setLocation(180, 140);
btnReset.setSize(60, 40);
add(btnReset);
JLabel lblResult =new JLabel();
lblResult.setText("Result:");
lblResult.setLocation(95, 200);
lblResult.setSize(70, 40);
add(lblResult);
JTextField txtResult = new JTextField();
txtResult.setLocation(150, 205);
txtResult.setSize(70,30);
txtResult.setEditable(false);
add(txtResult);
btnCalc.addActionListener(this);
btnReset.addActionListener(this);
setLayout(null);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
AddMult test = new AddMult();
}
ArrayList<Integer> list = new ArrayList<Integer>();
public void addList() {
int num = Integer.parseInt(txtEnterNum.getText().trim());
list.add(num);
txtEnterNum.setText("");
}
public String sum() {
int total=0;
for (int i = 0; i < list.size(); i++) {
total=total+list.get(i);
}
return total + "";
}
public String mult() {
int mult=1;
for (int i = 0; i < list.size(); i++) {
mult=mult*list.get(i);
}
return mult+"";
}
@Override
public void actionPerformed(ActionEvent a) {
// TODO Auto-generated method stub
String sum =sum();
String mult=mult();
if(btnCalc.equals(a.getSource())) {
if (radBtnAdd.isSelected()) {
txtResult.setText(sum);
}
else if (radBtnMul.isSelected()) {
txtResult.setText(mult);
}
}
else if (btnReset.equals(a.getSource())) {
txtEnterNum.setText("");
txtResult.setText("");
list.clear();
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==e.VK_ENTER) {
addList();
}
else if(e.getKeyCode()==e.VK_ESCAPE)
System.exit(1);
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
标签: java swing jframe actionlistener keylistener