在启动框架Java Swing之后处理框架

时间:2017-08-17 19:01:55

标签: java swing jframe

我是Stackoverflow的新手。我在项目到学校的java / swing中遇到了问题。

该项目是一项测试服务。我想在运行检查与服务器连接的主程序之前运行一个额外的窗口。检查连接后,它应该启动程序的主窗口并消失。如果我手动点击startProgramButton它就可以了。但是,如果程序在启动时连接到服务器,则程序的主窗口将启动,但此窗口不会消失。

public class PreForm extends javax.swing.JFrame {

/**
 * Creates new form PreForm
 */
MainForm form1;
Settings form2;

public PreForm() {
    initComponents();
    checkConnection();
}



private void settingsButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               
    errorLabel.setText("");
    form2 = new Settings();
    form2.setVisible(true);
}                                              

private void runProgramButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    checkConnection();
}                                                

private void checkConnection() {
    if (hostAvailabilityCheck()) {
        runMainProgram();
    } else
        errorLabel.setText("<html>Error connect to server!<br>"
                + "Check connect settings and try again!</html>");
}
private boolean hostAvailabilityCheck() {
    try (Socket s = new Socket(SettingsFile.getAddress(), Integer.parseInt(SettingsFile.getPort()))) {
        return true;
    } catch (IOException ex) {
        /* ignore */
    }
    return false;
}

private void runMainProgram() {
    this.setVisible(false);
    form1 = new MainForm();

    form1.setVisible(true);

}

public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new PreForm().setVisible(true);

        }
    });

}

因此,在运行程序后,执行checkConnection方法。然后执行runMainProgram方法。这就是this.setVisible (false)代码进来的地方,它应该隐藏窗口,但它会保留。但只有在构造函数中启动checkConnection方法时。如果您通过startProgramButton手动运行,则会隐藏此窗口。

0 个答案:

没有答案