延迟处理直到GUI输入



下面是从用户输入代理设置的代码。

 public static void setProxy()
     {   
      java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new proxy().setVisible(true);
        }
    });
// Control should halt here till user gives input as it assigns value to the variables
    String host = prox;
    String port = prt;
    System.out.println("Using proxy: " + host + ":" + port);

你做得不对。GUI应用程序的主要方法应该只做一件事:启动GUI。其余的逻辑将由与GUI交互的用户触发的事件触发。

因此,假设您的GUI显示一个框架,其中包含两个文本字段,用于输入主机和端口,以及一个用于继续的按钮,那么在GUI中,按钮上应该有一个操作侦听器:
proceedButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        String host = hostTextField.getText();
        String port = portTextField.getText();
        doSomethingWithHostAndPort(host, port);
    }
});

如果doSomethingWithHostAndPort()做了一些很长的事情,那么它应该在一个单独的线程中完成,以避免冻结GUI。

如果你想要一个确切的答案,你需要提供更多的信息。但我要做一些假设,你有一个按钮在输入信息后被按下,这个按钮有一个on click事件附加在它上面,这就是你添加变量赋值并开始处理的地方

相关内容

  • 没有找到相关文章

最新更新