Bir actionPerformed
sahibiyim ve eğer/else, kullanıcı "A" tuşuna basarsa, metni farklı bir şeye ayarlayacaktır. "A" düğmesine bastıktan sonra metni ayarlamak yerine, program metni ayarlamayı atlar ve aşağıdaki if ifadesine geçer. Benim sorum, programımı metnimi if ifademden önce nasıl ayarlayabilirim? Kodum aşağıda, teşekkürler!Eylem metnin değiştirilmemesine neden oldu
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import java.awt.event.*;
public class ATMProject extends JPanel implements ActionListener {
private JPanel mainPanel = null;
private JPanel btnPanel = null;
private JPanel userBtns = null;
private JTextArea textArea = null;
private JPanel keyPanel = null;
private JTextField numField = null;
private JPanel numpadPanel = null;
private JButton[] userButtons = null;
private JButton[] keypadButtons = null;
private String[] btnPanelbtns = { "A", "B", "C" };
private String[] numpadPanelbtns = { "7", "8", "9", "4", "5", "6", "1", "2", "3", "0", ".", "CE" };
private boolean isuserButtonPressed = false;
private boolean isAccEntered = true;
private FileReader file = null;
private String custAcc;
private String custPin;
private String userInputAcc;
private String userInputPin;
public ATMProject() {
super();
mainPanel = new JPanel();
this.setLayout(new BorderLayout());
this.add(mainPanel);
btnPanel = new JPanel();
btnPanel.setLayout(new GridLayout(3, 1));
this.add(btnPanel, BorderLayout.EAST);
textArea = new JTextArea();
this.add(textArea, BorderLayout.CENTER);
keyPanel = new JPanel();
keyPanel.setLayout(new BorderLayout());
this.add(keyPanel, BorderLayout.WEST);
numpadPanel = new JPanel();
numpadPanel.setLayout(new GridLayout(4, 3));
keyPanel.add(numpadPanel, BorderLayout.CENTER);
numField = new JTextField();
keyPanel.add(numField, BorderLayout.NORTH);
userButtons = new JButton[btnPanelbtns.length];
for (int i = 0; i < userButtons.length; i++) {
userButtons[i] = new JButton(btnPanelbtns[i]);
userButtons[i].addActionListener(this);
btnPanel.add(userButtons[i]);
}
keypadButtons = new JButton[numpadPanelbtns.length];
for (int i = 0; i < numpadPanelbtns.length; i++) {
keypadButtons[i] = new JButton(numpadPanelbtns[i]);
keypadButtons[i].addActionListener(this);
numpadPanel.add(keypadButtons[i]);
}
textArea.setText("Enter customer number: --> \nPress A when done \nA = OK");
userInputAcc = numField.getText();
// reading
try {
file = new FileReader("ConfidentialCustInfo.txt");
Scanner input = new Scanner(file);
custAcc = input.next();
custPin = input.next();
System.out.println(custAcc);
System.out.println(custPin);
input.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("CE")) {
numField.setText("");
} else if (e.getActionCommand().equals("1")) {
numField.setText(numField.getText() + "1");
} else if (e.getActionCommand().equals("2")) {
numField.setText(numField.getText() + "2");
} else if (e.getActionCommand().equals("3")) {
numField.setText(numField.getText() + "3");
} else if (e.getActionCommand().equals("4")) {
numField.setText(numField.getText() + "4");
} else if (e.getActionCommand().equals("5")) {
numField.setText(numField.getText() + "5");
} else if (e.getActionCommand().equals("6")) {
numField.setText(numField.getText() + "6");
} else if (e.getActionCommand().equals("7")) {
numField.setText(numField.getText() + "7");
} else if (e.getActionCommand().equals("8")) {
numField.setText(numField.getText() + "8");
} else if (e.getActionCommand().equals("9")) {
numField.setText(numField.getText() + "9");
} else if (e.getActionCommand().equals("A")) {
if (numField.getText().isEmpty()) {
textArea.setText("error");
} else {
numField.setText("");
textArea.setText("Enter PIN: \n A = OK");
userInputPin = (numField.getText());
}
}
}
public static void main(String[] args) {
MyFrame mf = new MyFrame();
}
}
Genellikle, bilgi için kullanıcıdan bilgi almak için bir JOptionPane kullanırsınız. Daha fazla bilgi ve örnek için Swing öğreticisinden [Dialog Make To Make Dialog] (http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html) bölümündeki bölümü okuyun. Bir dinleyicide yuvalanmış if/else ifadeleri kullanmayın. Her düğmenin kendi dinleyicisi olmalıdır. Yaygın işlevselliğe sahip düğmeler dinleyiciyi paylaşabilir (yani sayısal tuş). Bu yaklaşımın bir örneği için http://stackoverflow.com/questions/23375276/attaching-a-single-action-listener-to-all-buttons/23375436#23375436 adresine bakın. – camickr