Java Swing多Frame间传递回合数变量的实现方法问询
解决Java Swing掷骰子游戏Frame间传递回合数的问题
1. 调整GamePage的构造函数
让GamePage类的构造函数接收回合数参数,并将其保存为成员变量,供后续游戏循环使用:
public class GamePage extends javax.swing.JFrame { private int totalRounds; // 带参数的构造函数,接收总回合数 public GamePage(int rounds) { initComponents(); this.totalRounds = rounds; // 可在此初始化游戏状态,比如当前回合计数器等 } // 游戏运行方法,基于totalRounds控制循环次数 public void run() { for (int currentRound = 1; currentRound <= totalRounds; currentRound++) { // 编写单轮游戏逻辑:用户选数、电脑选数、掷骰子、判定胜负等 System.out.println("正在进行第" + currentRound + "回合"); } } // 其余自动生成的GUI代码保持不变... }
2. 修改起始Frame的按钮事件处理
在JFrameDiceGambalingGame的btnContActionPerformed方法中,将用户输入的回合数传递给GamePage,同时添加输入验证避免非法输入:
private void btnContActionPerformed(java.awt.event.ActionEvent evt) { try { // 读取输入并转换为整数(回合数应为整数,无需用double) String inputText = txtRoundInput.getText(); int rounds = Integer.parseInt(inputText); // 验证输入合法性 if (rounds <= 0) { javax.swing.JOptionPane.showMessageDialog(this, "请输入大于0的有效回合数!"); return; } // 创建GamePage实例时传入回合数 GamePage gamePage = new GamePage(rounds); gamePage.setVisible(true); gamePage.run(); // 隐藏当前起始窗口(可选,提升体验) this.setVisible(false); } catch (NumberFormatException e) { // 处理非数字输入的情况 javax.swing.JOptionPane.showMessageDialog(this, "请输入有效的数字!"); } }
3. 关键优化点
- 类型修正:回合数是整数,使用
int替代double更符合逻辑,避免不必要的类型转换。 - 输入验证:添加合法性检查,防止用户输入负数、非数字等无效内容导致程序崩溃。
- 窗口切换:打开游戏窗口后隐藏起始窗口,让用户专注于游戏界面。
内容的提问来源于stack exchange,提问作者MythInSpace
相关产品推荐
相关产品推荐

