事件发生后如何调整框架大小?

时间:2012-07-26 00:25:21

标签: java swing events resize frame

我创建了一个表单来选择数据库服务,例如SQL服务器和Oracle,以及它的版本。然后通过单击Connect按钮连接到它....但在建立连接之前,应该设置一些参数以便放置在URL中......此代码用于“连接”按钮。

jButton2 = new JButton();
getContentPane().add(jButton2);
jButton2.setText("Connect");
jButton2.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evt){
            LinkedFrame inst = new LinkedFrame();
            inst.setLocationRelativeTo(rootPane);
            inst.setVisible(true);
//Question:  Should I add any method here to do what I want? , and what method should I add?
            }
                    });
        }

这是LinkedFrame代码(从JFrame扩展):

    private class DatabaseSelectionHandler implements ActionListener{
    public void actionPerformed(ActionEvent evt){
        database=jTextField1.getText();
        username=jTextField2.getText();
        pass=new String(jPasswordField1.getPassword());
        if(database.isEmpty() || username.isEmpty() || pass.isEmpty())
            JOptionPane.showMessageDialog(null, "Please fill all fields", "Error", JOptionPane.ERROR_MESSAGE);
        else
        {   setVisible(false);
            if (service.equalsIgnoreCase("sqlserver"))
                Connector.MSSQLConnection(service);//Single tone connectioto SQL Server
            else
                Connector.ORACLEConnection(service);//Single tone connection to Oracle
//Question:  Should I add any method here to do what I want? , and what method should I add?
        }
    }       
}

LinkedFrame是一个用于收集所需信息的新表单,包括数据库名称,用户名和密码。这些信息应传递给Connector Class的MSSQLconnect或OracleConnect方法。在此单击按钮时创建此表单,并在填写所有字段时消失,然后按enter键...(参见上面的代码)

现在我有一些问题:

我想在填充空白并加热ENTER并且如果连接是为了进行查询时立即调整主框架(不是链接框架)的大小。

  1. 我应该使用哪种JFrame方法?

  2. 该方法应放在何处(在主框架的按钮事件处理程序中或在Linkedframe的事件处理程序中或建议的任何位置)?

  3. 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果没有更多代码,我们可能很难为您提供完整的答案,但我会有机会。

使用静态连接器是好的,只要您一次不需要多个连接。真的没有问题。但是,如果您这样做了,则需要将Connector传递给LinkedFrame,作为构造函数的一部分或属性,但这是设计选择。

对于LinkedFrame,我会将JDialog设置为modal。这将阻止用户输入,直到关闭对话框。这也意味着您可以显示对话框,您的代码将被阻止,直到对话框关闭。这为您提供了代码中的“陷阱”。

一旦用户从LinkedFrame提供您想要的信息并关闭对话框,您就可以提取所需的详细信息(如果有的话)并相应地调整主框架的大小。

<强>更新

public void actionPerformed(ActionEvent evt) {

    LinkedFrame linkedFrame = new LinkedFrame(); // create the dialog, set as modal
    linkedFrame.setVisible(true); // code will block here till you close the dialog

    setSize(width, height); // supply the width & height you want
}