我创建了一个表单来选择数据库服务,例如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并且如果连接是为了进行查询时立即调整主框架(不是链接框架)的大小。
我应该使用哪种JFrame方法?
该方法应放在何处(在主框架的按钮事件处理程序中或在Linkedframe的事件处理程序中或建议的任何位置)?
非常感谢您的帮助。
答案 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
}