【问题标题】:Call from a main of one class, a main method of another class从一个类的 main 调用,另一个类的 main 方法
【发布时间】:2016-02-27 15:47:04
【问题描述】:

我有两个轴承类——一个 GUI 和一个服务器。它们都有 main() 方法。当单击“连接”按钮(来自类 GUI)时,我想通过从其 main() 函数启动类 Server 中的所有进程。我能做到吗,有办法避免吗?

我已经厌倦了: - 删除Server类的main(String[] args)部分,重命名为initServer,然后通过GUI说

Server kb = new Server();
kb.initServer();`
  • 说出下面的话:

    Server.main()(在这种情况下,我用 main()s 保留了两个类)

这就是我现在所拥有的,当单击“连接”按钮时,它的事件发生了,但所有服务器检查都没有显示在命令行中。

【问题讨论】:

  • 解决方案不是让一个类调用另一个类的主类,而是对代码进行结构化,以便一个类可以以符合 OOP 的方式使用另一个类的实例。换句话说,重构和改进代码库。

标签: java swing syntax server java-server


【解决方案1】:

你在寻找这样的东西吗?

Test.java

public class Test {
    private void run() {
        new Test2();
    }

    public static void main(String[] args) {
        Test t = new Test();
        t.run();
    }
}

Test2.java

public class Test2 {
    Test2() {
        System.out.println("Hi");
    }
}

当函数run()在第一个类中执行时,它在哪里执行第二个类?在您的情况下,您可以使用 ActionListener 执行此操作,第二类将启动您的服务器

但是要正确回答这个问题,你怎么能从另一个类调用 main?,你可以这样做:

Test.java

public class Test {
    private void run() {
        new Test2().main(null);
    }

    public static void main(String[] args) {
        Test t = new Test();
        t.run();
    }
}

Test2.java

public class Test2 {
    public static void main(String[] args) {
        System.out.println("Hi");
    }
}

【讨论】:

  • @Dan,投反对票的不是我……回到这个话题,我想我必须试试这个。它应该是类似的。我将 Server 类保留为 main 是没有意义的,因为它只有在条件为真时才会执行,所以这意味着我的 main() 必须只在 GUI 中。我会完善这两个,我会尝试你刚刚建议我的。我只是分别在两个班上工作,现在我想加入他们……只有那两个把整个事情搞砸了,应该是次要的
  • @KDX2 如果您不想在重新安排课程时造成太多麻烦,如果您查看我对方法new Server().main(null); 的回答的编辑,可能会允许它工作
  • @Dan,我是否有可能启动了 Server 类但它是没有输出的 cmd? private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) { // this must start the server: new ServerSide().main(null);} 这就是 GUI 端现在的样子,服务器:public static void main ServerSide (String[] args){ System.out.println("U are in the server side"); +blablabla...} 第二次检查 - 你在服务器端没有显示
  • 你的服务器类自己能正常运行吗?
  • @KDX2:我很高兴你把它整理出来,如果 Dan 的回答帮助你找到了答案,你会想要投票并accept 它。关于修复你的冻结,你会想看看这个有用的教程:Lesson: Concurrency in Swing
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 2011-10-07
  • 2015-08-08
  • 2017-09-27
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
相关资源
最近更新 更多