私はカードゲームを持っていて、ArrayListsを使って人々の手にカードを保存しています。私は、メインクラスでInvokeLaterを使って呼び出されたスレッドを使ってGUIクラスを更新します。選手の手からのカードの選択。私がしたいのは、プレイヤーが選択をしなければならないときに実行される、おそらく呼び出しと待機でスレッドを実行することです。次に、プレーヤーがGUI内の対応するカードをクリックし、カードの場所の適切なintを返すのを待ちます。この選択は私のゲームで処理されます。Java Swing: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()メソッドに戻したいと考えています。私は、これを行う方法、具体的には選択が行われるのを待つことができません。私はこれを行うことができると聞いてきましたが、これを自分の仕事にどのように実装するのかは分かりません。誰かがそれが偉大になるのを助けることができたら。
Java命名規則を学び、それらに固執してください。 – kleopatra