gpt4 book ai didi

java - GUI等待键盘 "enter"并继续显示

转载 作者:行者123 更新时间:2023-11-29 07:08:00 25 4
gpt4 key购买 nike

我有一个 JAVA 纸牌游戏,每轮显示四张牌。

目前,每轮之间的停止正在等待控制台中的\n 输入。但我想将其更改为等待 GUI 上的键盘“输入”。

以下是我当前的代码。请让我知道我应该如何更改它?

万分感谢!!!

import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;



public class Game {

public static void main(String args[]) throws IOException {

Deck deck = new Deck();
deck.shuffle();
int aGame = 4;

List<Card> cards = new ArrayList<Card> ();

for(int i = 0; i < 52; i++) {
cards.add(deck.deck.get(i));
if(aGame == 1) {
System.out.println(deck.deck.get(i).toString());
System.out.println("Start!!!");

JFrame f = new JFrame("Calculating 24!");
GridLayout grid = new GridLayout(2, 2);
f.setLayout(grid);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

for(Card c: cards){
f.add(new LoadImageApp(c));
}
f.pack();
f.setVisible(true);
cards.clear();

while (true) {
char c = (char) System.in.read();
if (c == '\n') {

f.setVisible(false);
break;
}
}

aGame = 4;
if(i == 51) {
deck.shuffle();
i = -1;
}
}
else if(aGame == 4) {
System.out.println("Calculate based on the following four cards!");
System.out.println(deck.deck.get(i).toString());
aGame --;
}
else {
System.out.println(deck.deck.get(i).toString());
aGame --;
}
}
}



}

最佳答案

如果接受值的 GUI 元素是 JTextField,则可以添加一个 ActionListener,它通常会在用户点击 Enter

其他提示

1)

                f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

将其更改为:

f.setDefaultCloseOperaiton(JFrame.EXIT_ON_CLOSE);

或者更好..

f.setDefaultCloseOperaiton(JFrame.DISPOSE_ON_CLOSE);

第一个与之前的效果相同,但第二个也会检查在退出之前是否有非守护线程在运行。

2)

不要尝试将 GUI 和命令行混合在一起。您为两者编写应用程序的方式大不相同。

关于java - GUI等待键盘 "enter"并继续显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17526339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com