gpt4 book ai didi

java - 我如何区分 actionPerformed 中的两个不同的 JButton?

转载 作者:行者123 更新时间:2023-11-29 09:48:44 24 4
gpt4 key购买 nike

所以我有我的 JButtons

public static JButton textYes = new JButton("Yes");
public static JButton textNo = new JButton("No");

我的菜单

public static String choiceReroll = "";
public static String menu = "";

和我的 main() 方法

public static void main(String[] args) throws IOException {
Greed gui = new Greed();
gui.launchFrame();
redirectSystemStreams();

Container contentPane = f.getContentPane();
contentPane.add(new Greed());

Scanner is = new Scanner(System.in);
System.out.println("Welcome to Greed...");
do {
System.out.println("Would you like to play? (yes/no)");
menu = is.next();
switch (menu) {
case "yes":
jTextArea1.setText(null);
diceOne = 0;
diceTwo = 0;
diceThree = 0;
diceFour = 0;
diceFive = 0;
System.out.println("Rolling...");
Game();

break;
case "no":
System.out.println("Goodbye...");
System.exit(0);

break;
default:
invalidInput();

break;
}
} while (!"yes".equals(menu) || !"no".equals(menu));
}

然后我有我的actionListeners

textYes.addActionListener(this);
textNo.addActionListener(this);

我如何做到这一点,以便当我单击一个或另一个按钮时,它会在请求用户输入的地方输入文本 menu = is.next();

我还希望它只输入文本,具体取决于它单击的是哪个按钮。并让它输入文本,无论什么变量要求输入

例如:

menu = is.next();

对比

choiceReroll = is.next();

编辑:更多信息...

我还有我的 performedAction() 方法

public void actionPerformed(ActionEvent e) {
jTextArea1.setText(null);
if (box1.isSelected()) {
System.out.println("1 is selected");
willRerollDiceOne = true;
}
else {
System.out.println("1 not selected");
willRerollDiceOne = false;
}
if (box2.isSelected()) {
System.out.println("2 is selected");
willRerollDiceTwo = true;
}
else {
System.out.println("2 not selected");
willRerollDiceTwo = false;
}
if (box3.isSelected()) {
System.out.println("3 is selected");
willRerollDiceThree = true;
}
else {
System.out.println("3 not selected");
willRerollDiceThree = false;
}
if (box4.isSelected()) {
System.out.println("4 is selected");
willRerollDiceFour = true;
}
else {
System.out.println("4 not selected");
willRerollDiceFour = false;
}
if (box5.isSelected()) {
System.out.println("5 is selected");
willRerollDiceFive = true;
}
else {
System.out.println("5 not selected");
willRerollDiceFive = false;
}

编辑:我为按钮添加了 actionPerformed,但现在只显示一个

    if (area == "menu") {
if(e.getSource() == textYes){
menu = "yes";
}
if(e.getSource() == textNo){
menu = "no";
}
}

但是当我点击按钮时,它没有更新,为什么?我该如何解决这个问题?

编辑:在 if 语句中添加了一个“测试”打印输出

    if ("menu".equals(area)) {
if(e.getSource() == textYes){
menu = "yes";
System.out.println("test");
}
if(e.getSource() == textNo){
menu = "no";
}

每次单击是按钮时打印“测试”

编辑:这是方法的其余部分:

    public static void main(String[] args) throws IOException {
Greed gui = new Greed();
gui.launchFrame();
redirectSystemStreams();

Container contentPane = f.getContentPane();
contentPane.add(new Greed());

Scanner is = new Scanner(System.in);
System.out.println("Welcome to Greed...");
do {
System.out.println("Would you like to play? (yes/no)");
area = "menu";
menu = is.next();
switch (menu) {
case "yes":
jTextArea1.setText(null);
diceOne = 0;
diceTwo = 0;
diceThree = 0;
diceFour = 0;
diceFive = 0;
System.out.println("Rolling...");
Game();

break;
case "no":
System.out.println("Goodbye...");
System.exit(0);

break;
default:
invalidInput();

break;
}
} while (!"yes".equals(menu) || !"no".equals(menu));
area = "";
}

public static void Game() throws IOException {
rollDiceOne();
rollDiceTwo();
rollDiceThree();
rollDiceFour();
rollDiceFive();

//displayDice();
displayDiceValues();
f.validate();
f.repaint();

choiceRerollDice();
}

public static void choiceRerollDice() {
Scanner is = new Scanner(System.in);
do {
if (!canRerollDiceOne && !canRerollDiceTwo && !canRerollDiceThree && !canRerollDiceFour && !canRerollDiceFive) {
System.out.println("Sorry, but you may not reroll any more dice...");
displayDiceValues();
System.exit(0);
}
else {
System.out.println("Would you like to reroll any (more) dice? (yes/no)");
choiceReroll = is.next();
switch (choiceReroll) {
case "yes":
rerollDice();
break;
case "no":
//endTurn();
displayDiceValues();
f.repaint();
//calculatePlayer1Score();
//System.out.println("Thank you for playing!");
//System.out.println("Goodbye!");
System.exit(0);
default:
invalidInput();
}
}
} while (!"yes".equals(choiceReroll) || !"no".equals(choiceReroll));
}

public static void rerollDice() {
Scanner is = new Scanner(System.in);
System.out.println("Which dice would you like to reroll? (Click the box under the dice!)");
rollSel = is.next();
switch (rollSel) {
case "roll":
if (willRerollDiceOne) {
if (canRerollDiceOne) {
diceOne = 0;
rollDiceOne();
canRerollDiceOne = false;
box1.setEnabled(false);
}
else {
System.out.println("error");
}
}

else {
}
if (willRerollDiceTwo) {
if (canRerollDiceTwo) {
diceTwo = 0;
rollDiceTwo();
canRerollDiceTwo = false;
box2.setEnabled(false);
}
else {
System.out.println("error");
}
}
else {
}
if (willRerollDiceThree) {
if (canRerollDiceThree) {
diceThree = 0;
rollDiceThree();
canRerollDiceThree = false;
box3.setEnabled(false);
}
}
else {
}
if (willRerollDiceFour) {
if (canRerollDiceFour) {
diceFour = 0;
rollDiceFour();
canRerollDiceFour = false;
box4.setEnabled(false);
}
}
else {
}
if (willRerollDiceFive) {
if (canRerollDiceFive) {
diceFive = 0;
rollDiceFive();
canRerollDiceFive = false;
box5.setEnabled(false);
}
}
else {
}
box1.setSelected(false);
box2.setSelected(false);
box3.setSelected(false);
box4.setSelected(false);
box5.setSelected(false);
f.validate();
f.repaint();
break;
default:
System.out.println("Error...");
}

最佳答案

在您的actionPerformed 方法中:

public void actionPerformed(ActionEvent e) { 
if(e.getSource() == textYes){
//perform action when textYes clicked
}
if(e.getSource() == textNo){
//perform action when textNo clicked
}
}

而不是这个:

Scanner is = new Scanner(System.in);
System.out.println("Welcome to Greed...");
do {
System.out.println("Would you like to play? (yes/no)");
area = "menu";
menu = is.next();
switch (menu) {
case "yes":
jTextArea1.setText(null);
diceOne = 0;
diceTwo = 0;
diceThree = 0;
diceFour = 0;
diceFive = 0;
System.out.println("Rolling...");
Game();

break;
case "no":
System.out.println("Goodbye...");
System.exit(0);

break;
default:
invalidInput();

break;
}
} while (!"yes".equals(menu) || !"no".equals(menu));
area = "";

您可以创建一个将输入作为参数的方法。

public void start(String menu){
switch (menu) {
case "yes":
jTextArea1.setText(null);
diceOne = 0;
diceTwo = 0;
diceThree = 0;
diceFour = 0;
diceFive = 0;
System.out.println("Rolling...");
Game();

break;
case "no":
System.out.println("Goodbye...");
System.exit(0);

break;
default:
invalidInput();

break;
}
}

然后在执行的操作中,执行:

if(e.getSource() == textYes){
start("yes");
}
if(e.getSource() == textNo){
start("no");
}

关于java - 我如何区分 actionPerformed 中的两个不同的 JButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17143871/

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