숙제 지정을위한 도움말을 다시 찾습니다. 나는 이것을 거의 가지고 있지만, for-loop가 사용자 텍스트 입력을 기다릴 수없는 이유를 이해하는 데 어려움을 겪고있다. 기본적으로, 나는 암기에서 색깔을 입력하도록 사용자를 자극하는 프로그램이 필요합니다. 색상은 배열에 문자열로 포함됩니다. for-loop를 반복 할 때마다 액션 리스너가 적절한 텍스트가 입력되었는지 확인하고 확인하고 싶습니다. 그렇다면 상자의 JLabel 텍스트가 "색상 번호 x를 입력하십시오."에서 "색상 번호 x + 1을 입력하십시오"로 바뀌어야합니다.For 루프가 JTextField에서 사용자 응답을 기다리지 않습니다.
여기에 제가 눈치 챘을 겁니다 : My 반복문은 전체 반복주기 사용자가 필드에 텍스트를 입력하게합니다. 그래서 그 대신 색상 번호 1의 사용자에게 메시지를 표시의, 그냥 색상 번호 해협 간다 5.
여기에 내가 그것을 가지고 코드입니다 :
이import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
public class ColorGame extends JFrame
{
private static final int WIDTH = 300;
private static final int HEIGHT = 200;
//Text field that will confirm a user submission
private JTextField colorEntry = new JTextField(10);
private int colorIndex = 0; //current index of colorSequence
//String Array of colors to be searched for and validated in a text field
private String[] colorSequence = {"red", "white", "yellow", "green", "blue"};
public ColorGame()
{
setTitle("Memory Game");
setSize(WIDTH, HEIGHT);
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
createContents();
setVisible(true);
}
public void createContents()
{
//dialog box to inform user of program's purpose
JOptionPane.showMessageDialog(null, "How good is your memory?\nTry to memorize "
+ "this color sequence:\n\nred, white, yellow, green, blue");
//JLabel to prompt user for color
JLabel colorPrompt = new JLabel();
add(colorPrompt);
add(colorEntry);
for(int i = 0; i < colorSequence.length; i++)
{
colorIndex = i + 1;
colorPrompt.setText("Enter color number " + colorIndex + ":");
colorEntry.addActionListener(new Listener());
}
}
private class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String colorText = "";
colorText = colorEntry.getText();
if(colorText.equals(colorSequence))
System.out.println("Hello");
else
System.out.println("No");
}
}
public static void main(String[] args)
{
new ColorGame();
}
}
그래서 내 createContents 메서드의 for-loop 대신 Listener 메서드에서 for-loop를 사용하고 싶습니다. –
@ZachFiedler : ** No **, 이벤트 구동 프로그래밍의 상태를 변경하는 방식이 아니기 때문에 for 루프 * 아무 곳이나 사용하지 않을 것입니다. 위의 답변을 수정하십시오. –
나는 Java에 대해 매우 신선하다는 사실을이 머리말에 두어야한다. 귀하의 코드는 매우 유용했습니다! 액션 리스너 내부에서 if 문을 논리적으로 사용하여 정보를 지속적으로 업데이트하고 숫자 프롬프트를 동적으로 변경하는 방법을 찾아 냈습니다. –