设置 checkbox/radiobox 以向 JButton 添加额外的 cmd 参数?
Set checkbox/radiobox to add additional cmd params to a JButton?
就这样,我有很多 checkboxes/radio个盒子,首先,主要的jButton是"RunGameButton"然后我有这里的代码
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
catch(IOException e)
{
}
}
例如,我有一个名为 "NoMonstersBox" 的复选框,选中后,它会将 -nomonsters 命令添加到 mygame.exe 的启动到 "RunGameButton" 的代码中像这样
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe -nomonsters");
}
catch(IOException e)
{
}
}
但是,我几乎是一个新手,我不知道把什么放在哪里,或者把什么放在哪里。广泛的谷歌搜索没有任何用处。
编辑
这是我要求的当前位
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
if(CheatsBox.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe +SV_CHEATS 1");
}
if(NoMonstersBox.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe -nomonsters");
}
else
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
}
catch(IOException e)
{
//Log Error
}
}
假设您的 NoMonsters
标志由名称为 chkNoMonsters
的复选框表示,您可以做的是增加 RunGameButtonActionPerformed
事件处理程序以获取复选框的状态考虑,像这样:
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
if(chkNoMonsters.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\mygame.exe -nomonsters");
}
else
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
}
catch(IOException e)
{
//Log Error
}
}
另请注意,捕获异常而不对它们做任何事情被认为是一种后备做法。您通常做的至少是记录它们,这样您就知道有什么东西坏了。
编辑:根据您的问题编辑,主要问题是您有两组条件组。第一组由 if
语句表示:if(CheatsBox.isSelected())
,第二组由 if(NoMonstersBox.isSelected())... else...
表示。
为确保您的游戏只运行一次,您需要将两组条件组合并为一组。为此,您只需将 if(NoMonstersBox.isSelected())
替换为 else if(NoMonstersBox.isSelected())
。这将确保只选择 3 个条件中的一个。
然而,这将使您的选择相互排斥,这意味着您无法同时启用 NoMonsters
和 +SV_CHEATS 1
标志。要解决这个问题,您可以使用 StringBuilder
class,像这样:
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
//Basic game launching command.
StringBuilder sb = new StringBuilder("cmd.exe /C start C:\mygame\game.exe");
if(chkNoMonsters.isSelected())
{
//Add the No Monsters Flag
sb.append(" -nomonsters");
}
if(CheatsBox.isSelected())
{
//Add the Cheats Flag
sb.append(" +SV_CHEATS 1");
}
//Launch the game
Process process = Runtime.getRuntime().exec(sb.toString());
}
catch(IOException e)
{
//Log Error
}
}
就这样,我有很多 checkboxes/radio个盒子,首先,主要的jButton是"RunGameButton"然后我有这里的代码
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
catch(IOException e)
{
}
}
例如,我有一个名为 "NoMonstersBox" 的复选框,选中后,它会将 -nomonsters 命令添加到 mygame.exe 的启动到 "RunGameButton" 的代码中像这样
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe -nomonsters");
}
catch(IOException e)
{
}
}
但是,我几乎是一个新手,我不知道把什么放在哪里,或者把什么放在哪里。广泛的谷歌搜索没有任何用处。
编辑
这是我要求的当前位
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
if(CheatsBox.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe +SV_CHEATS 1");
}
if(NoMonstersBox.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe -nomonsters");
}
else
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
}
catch(IOException e)
{
//Log Error
}
}
假设您的 NoMonsters
标志由名称为 chkNoMonsters
的复选框表示,您可以做的是增加 RunGameButtonActionPerformed
事件处理程序以获取复选框的状态考虑,像这样:
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
if(chkNoMonsters.isSelected())
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\mygame.exe -nomonsters");
}
else
{
Process process = Runtime.getRuntime().exec("cmd.exe /C start C:\mygame\game.exe");
}
}
catch(IOException e)
{
//Log Error
}
}
另请注意,捕获异常而不对它们做任何事情被认为是一种后备做法。您通常做的至少是记录它们,这样您就知道有什么东西坏了。
编辑:根据您的问题编辑,主要问题是您有两组条件组。第一组由 if
语句表示:if(CheatsBox.isSelected())
,第二组由 if(NoMonstersBox.isSelected())... else...
表示。
为确保您的游戏只运行一次,您需要将两组条件组合并为一组。为此,您只需将 if(NoMonstersBox.isSelected())
替换为 else if(NoMonstersBox.isSelected())
。这将确保只选择 3 个条件中的一个。
然而,这将使您的选择相互排斥,这意味着您无法同时启用 NoMonsters
和 +SV_CHEATS 1
标志。要解决这个问题,您可以使用 StringBuilder
class,像这样:
private void RunGameButtonActionPerformed(java.awt.event.ActionEvent evt) {
try
{
//Basic game launching command.
StringBuilder sb = new StringBuilder("cmd.exe /C start C:\mygame\game.exe");
if(chkNoMonsters.isSelected())
{
//Add the No Monsters Flag
sb.append(" -nomonsters");
}
if(CheatsBox.isSelected())
{
//Add the Cheats Flag
sb.append(" +SV_CHEATS 1");
}
//Launch the game
Process process = Runtime.getRuntime().exec(sb.toString());
}
catch(IOException e)
{
//Log Error
}
}