입력란에 무언가를 입력하면 애플리케이션이 멈추고 Enter 키를 누르면 응답이 중지됩니다. 1에서 100 사이의 숫자를 얻으려고하는 게임입니다. 입력 버튼에 제출 버튼이나 ActionListener가 필요하다고 생각합니다. 누군가가 이걸 도와 줄 수 있어요. 또한 FlowLayout에서 선을 끊는 방법이 있습니까? 아니면 다른 레이아웃이 더 좋습니까? 내 코드는 다음과 같습니다.Java Actionlistener 제출 버튼
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class game extends JFrame {
private static final long serialVersionUID = 1L;
private Random rand = new Random();
private int number = rand.nextInt(101);
private JLabel result, prompt;
private JTextField input;
game() {
super("Numbers");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
prompt = new JLabel("Enter a number between 1 and 100");
add(prompt);
input = new JTextField(3);
add(input);
result = new JLabel("");
add(result);
event a = new event();
input.addActionListener(a);
}
public class event implements ActionListener {
public void actionPerformed(ActionEvent a) {
int guess = 0;
try {
guess = Integer.parseInt(input.getText());
} catch(NumberFormatException e) {
result.setText("Error - Illegal Data Entered");
result.setForeground(Color.RED);
}
while(guess!=number) {
if(guess>number) {
result.setText("Guess Too High. Try Again.");
result.setForeground(Color.CYAN);
} else if(guess<number) {
result.setText("Guess Too Low. Try Again.");
result.setForeground(Color.CYAN);
} else {
result.setText("Unknown Error");
result.setForeground(Color.RED);
}
}
if(guess==number){
result.setText("Right the number was "+number);
result.setForeground(Color.GREEN);
}
}
}
public static void main(String[] args) {
new game().setVisible(true);
}
}
미리 감사드립니다.
업데이트
그래서 While 루프를 제거하고 모든 것이 정상적으로 작동했습니다. 맞았나요?
그래서'if (guess == number) {break;}'를 추가하면 그것을 고칠 수 있을까? – Col1107
고마워요. – Col1107
시계를 잡아 먹으십시오. try & catch와 다른 잠재적 인 오류가 있습니다. 문자열을 삽입하면 실행이 끝납니다. 블록의 끝에 붙이면 코드 실행이 끝납니다. – nachokk