我有两个Java Swing应用程序,我需要能够从第二个应用程序执行第一个。我已经将第一个编译为jar并将其放置在第二个的类路径中。我正在从应用程序中调用第一个jar的主类,但我看到的只是一个空白帧。
我的第一个Jar的主菜单如下所示:

import java.awt.EventQueue;
import java.awt.Frame;
import javax.swing.JDialog;
public class AskulLibrary extends Frame implements Runnable{
final Frame frame;
    public AskulLibrary(Frame frame) {
        this.frame = frame;
    }

    public void run() {
        frame.show();
    }

    public static void main(String[] args) {
        JDialog.setDefaultLookAndFeelDecorated(true);
        // Throw a nice little title page up on the screen first
        new Splash().showSplash(3000);
        EventQueue.invokeLater(new AskulLibrary(new JLibrary()));
    }
}


我从第二个应用程序中调用该主类,如下所示:

import com.AskulLibrary;
import java.awt.Frame;
public class MainFrame extends JFrame{
       AskulLibrary lib;
       Frame frame;
     public MainFrame(){
    frame = new new Frame();
    lib = new AskulLibrary (frame);
    lib.run();

}

}


我在某处做错了事,因为不是初始化第一个Jar,而是得到一个空的Frame。我不希望像这样运行jar,尽管它成功运行了第一个程序:

Runtime.getRuntime().exec("java -jar lib/Myfirstjar.jar");

最佳答案

为什么不使用官方API How to Create a Splash Screen中的已实现方法
(在正式API中实现Splash Screen之前)使用JWindow / JDialog,但不使用Runnable#Thread,请对InitialThread使用关于Event Dispatch Thread所述的关于的严格逻辑
见我的Top-Level Containers

10-06 13:50
查看更多