使用 JButton 跳转到另一个 class
Jumping to another class using a JButton
我在下面的代码中制作了一个简单的 GUI。我希望 Button2 导航到 class 'Project2',这应该会启动另一段代码。请注意,在其当前状态下,'Project2' 没有 GUI,但我打算很快添加一个。无论如何,我通过添加使用的 'code jump':String[] args = {};
Project2.main(args);
不工作,正如 IDE 所说 'IOException must be caught or thrown'。我知道它是如何工作的,尽管我不确定如何在程序中实现它。
提前致谢!
在大多数 IDE 中,当您在设计 (GUI) 窗格中右键单击 Button2 时,您可以浏览:
事件 -> 操作 -> actionPerformed()。
并在选择的方法中写入这段代码来切换类:
this.setVisible(false); //turns off the visibility of the current class
outputClass out = new outputClass(); //creating the object of the class you want to redirect to
out.setVisible(true);//turns on the visibility of the class you want to redirect to
您可以尝试为您的程序使用动态 class 加载。您可以在下面找到 lambda,它从 com.Whosebug.ExternalCaller
class.
调用 main
方法
If you do not like to use lambda, you can create a simple anonymous class.
button.addActionListener(s -> {
try {
Class<?> externalCaller = Class.forName("com.Whosebug.ExternalCaller");
Method main = externalCaller.getDeclaredMethod("main", new Class[]{String[].class});
main.invoke(null, new Object[]{new String[0]});
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
});
ExternalCaller
class 看起来像这样:
package com.Whosebug;
public class ExternalCaller {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
结果是,一旦您单击该按钮,您将在控制台中得到 Hello World
输出。
如果您想使用外部 jar 等,请查看 Process
class。快速示例:
Process proc = Runtime.getRuntime().exec("java -jar External.jar");
甚至更多 fork/exec
。您可以阅读 From Runtime.exec() to ProcessBuilder 了解更多详情。
希望这会有所帮助。祝你好运。
我在下面的代码中制作了一个简单的 GUI。我希望 Button2 导航到 class 'Project2',这应该会启动另一段代码。请注意,在其当前状态下,'Project2' 没有 GUI,但我打算很快添加一个。无论如何,我通过添加使用的 'code jump':String[] args = {};
Project2.main(args);
不工作,正如 IDE 所说 'IOException must be caught or thrown'。我知道它是如何工作的,尽管我不确定如何在程序中实现它。
提前致谢!
在大多数 IDE 中,当您在设计 (GUI) 窗格中右键单击 Button2 时,您可以浏览:
事件 -> 操作 -> actionPerformed()。
并在选择的方法中写入这段代码来切换类:
this.setVisible(false); //turns off the visibility of the current class
outputClass out = new outputClass(); //creating the object of the class you want to redirect to
out.setVisible(true);//turns on the visibility of the class you want to redirect to
您可以尝试为您的程序使用动态 class 加载。您可以在下面找到 lambda,它从 com.Whosebug.ExternalCaller
class.
main
方法
If you do not like to use lambda, you can create a simple anonymous class.
button.addActionListener(s -> {
try {
Class<?> externalCaller = Class.forName("com.Whosebug.ExternalCaller");
Method main = externalCaller.getDeclaredMethod("main", new Class[]{String[].class});
main.invoke(null, new Object[]{new String[0]});
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
});
ExternalCaller
class 看起来像这样:
package com.Whosebug;
public class ExternalCaller {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
结果是,一旦您单击该按钮,您将在控制台中得到 Hello World
输出。
如果您想使用外部 jar 等,请查看 Process
class。快速示例:
Process proc = Runtime.getRuntime().exec("java -jar External.jar");
甚至更多 fork/exec
。您可以阅读 From Runtime.exec() to ProcessBuilder 了解更多详情。
希望这会有所帮助。祝你好运。