나는 카드 게임을 가지고 있으며 ArrayList를 사용하여 사람들의 손에 카드를 저장합니다. 메인 클래스에서 InvokeLater를 사용하여 호출 된 GUI 클래스를 업데이트하고 GUI 클래스를 업데이트하는 메인 메서드가 있습니다.자바 스윙 : Int를 반환하기 전에 마우스 클릭 이벤트를 기다리는 중
현재 콘솔에서 게임을하고 스캐너에 int를 입력하여 플레이어 손에서 카드를 선택합니다. 내가하고 싶은 것은 플레이어가 선택을해야 할 때 실행되는 스레드를 호출하는 것입니다. 그런 다음 플레이어가 GUI에서 해당 카드를 클릭 할 때까지 기다렸다가 카드 위치에 적절한 int를 반환합니다. 이 선택은 내 게임에 의해 처리됩니다.
현재 GUI를 어떻게 업데이트하고 있습니까?
public static void Play(ArrayList<Card> ...){
UpdateHand(player1, deck, deckused);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUI.getInstance().UpdateHand();
}
});
카드에 리스너를 부착하고 이름을 손안의 해당 위치의 int로 설정하십시오.
public void PlayerSelection()
{
selection = -1;
Information = new JLabel("Please Select Your Card");
ButtonDisplay.add(Information);
ButtonDisplay.updateUI();
for (int i = 0; i < (HumanHand.size()); i++)
{
Card card = HumanHand.get(i);
BufferedImage cardImage = null;
try {
cardImage = ImageIO.read(new File("card/" + card + ".jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon(cardImage));
String name = "" + i;
picLabel.setName(name);
picLabel.addMouseListener((MouseListener) this);
HumanHandDisplay.add(picLabel);
}
}
마우스를 클릭 할 때 int를 저장합니다.
나머지는 계산에 사용하기 위해이 int를 기본 클래스 인 Play() 메소드로 반환하고 싶습니다. 이 작업을 수행하는 방법, 특히 선택을 기다리는 작업을 수행 할 수 없습니다. 이 작업을 수행 할 수 있다고 들었지만이 작업을 구현하는 방법은 확실하지 않습니다. 누구라도 도움이된다면 도움이 될 것입니다.
자바 명명 규칙을 배우고 준수하십시오. – kleopatra