我想知道,如何将JButton中的main方法调用到执行动作的JFrame中,我的意思是,只需按下比较按钮&从主类执行代码(Main类与JFrame代码分开)。
public static void main(String[]args){
Comparative comp = new Comparative();
if(comp.loadComparative(args[0])){
comp.compareDbs();
comp.sendEmail();
}
}
private void CompareActionPerformed(java.awt.event.ActionEvent evt) {
?????????????
}
答案 0 :(得分:3)
如果主类位于类路径上,则可以使用反射:
private void CompareActionPerformed(java.awt.event.ActionEvent evt) {
MyMainClassToCall.main(myArgs);
}
如果类位于其他位置(可能在jar中),您当然可以使用URLClassLoader
加载包含main
方法的类,然后使用
myMainClass.getMethod("main", String[].class).invoke(null, myArgs);
答案 1 :(得分:1)
您可以获取所需的参数,然后使用类的名称来调用它:
MainClass.main(args);
答案 2 :(得分:1)
要给出完整的答案,我们实际上需要知道包含该main
方法的类的名称是什么。此外,我很难理解这样一个奇怪的要求,但我会尽力提出一个有用的答案。
要调用main
方法,您需要通过包含它的类来访问它,因为它是static
方法。您还需要提供一个参数数组,主要是因为您的main方法似乎使用arguments数组中的第一个元素。所以这样的事情会起作用:
private void CompareActionPerformed(java.awt.event.ActionEvent evt) {
String[] args = new String[] { "myparam" };
MainClass.main(args);
}
现在,请注意,这样一个main方法的调用是一个非常糟糕的做法,你可以实现将main方法的内容复制到事件处理程序CompareActionPerformed
中。或者甚至更好,使用静态方法创建一个单独的独立类,该方法执行与main方法相同的操作。然后从主类和事件处理程序中调用新的静态方法(假设所有代码都可以从同一个类加载器访问)。
答案 3 :(得分:0)
我认为这是一个不好的做法,你应该遵循一些设计模式,比如MVC或其他东西,当JVM启动时它会查找“main”方法并从那里开始,你可以在调用main方法之前做的事情就是放一些像...
public class test {
static {
some code
}
public static void main(String[] args){
}
}
此代码将在主
之前执行答案 4 :(得分:0)
只有一个类,它里面的比较是包括主要的所有代码....