0
Привет, я пытаюсь использовать GUI для проверки кредитной карты, я не могу заставить его работать. im с трудным временем прослушивания действия для работы с тем, что пользователь вводит в текстовое поле. У меня большая часть кода завершена. Спасибо за любую помощь :)actionlistener to Textfield
import java.util.Scanner;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
общественный класс CreditCard простирается JFrame { общественного JTextField xyzField;
public CreditCard(){
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
add(new JLabel("Credit Card Number"));
add(new JTextField(16));
JButton jbtCHECK = new JButton("Check");
JPanel panel = new JPanel();
panel.add(jbtCHECK);
add(panel);
CHECKListenerClass listener1 = new CHECKListenerClass();
jbtCHECK.addActionListener(listener1);
}
public static void main(String[] args) {
JFrame frame = new CreditCard();
frame.setTitle("Credit Card validation");
frame.setSize(450, 100);
frame.setLocation(200, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class CHECKListenerClass implements ActionListener{
public void actionPerformed(ActionEvent e) {
long total;
Scanner input = new Scanner(xyzField.getText());
long number = input.nextLong();
total = sumOfEvenPlaces(number) + sumOfOddPlaces(number);
System.out.println(total);
if(isValid(total)) {
System.out.println("This card is valid.");
}
else {
System.out.println("Your card is invalid.");
}
}
}
public static boolean isValid(long total) {
if (total % 10 == 0) {
return true;
}
return false;
}
public static int sumOfEvenPlaces(long number) {
int sum = 0;
number = number/10;
while (number != 0) {
sum += getDigit((int)((number % 10) * 2));
number = number/100;
}
System.out.println(sum);
return sum;
}
public static int getDigit(int number) {
if (number <= 9) {
return number;
}
else if (number > 9)
return (number % 10 + number/10);
return number;
}
public static int sumOfOddPlaces(long number) {
int sum = 0;
while (number != 0) {
sum += (int)(number % 10);
number = number/100;
}
System.out.println(sum);
return sum;
}
public static boolean getPrefix1(long number, int k) {
return getPrefix(number, getSize(number)) == number;
}
public static int getSize(long number) {
int len = 0;
while (number >= 10) {
number /= 10;
len++;
}
return len;
}
public static long getPrefix(long number, int k) {
long result = number;
for (int i = 0; i < getSize(number) - (k - 1); i++)
result /= 10;
return result;
}
}
Большое спасибо, получил его на работу, теперь придется получить ответ как GUI, а не в совет – Mars
Хамм. .. Вы можете использовать 'JOptionPane.showMessage'. :-) –
@Mars Добро пожаловать. Не забывайте, что если ответ удовлетворит ваш вопрос удовлетворительно, вы можете [принять его] (http://meta.stackoverflow.com/a/5235/227183). :-) –