所以我得到了这些字符串,我的主文件名为“Login”,就像类
一样public JPasswordField passfield;
public JTextField userfield;
public JTextField hostfield;
public String host;
public String user;
public String pwd;
JButton buttoncon = new JButton("Connect");
//buttoncon.addActionListener(buttonconClick());
buttoncon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
buttonconClick();
}
} );
public void buttonconClick() {
if(hostfield.getText().length()==0)
JOptionPane.showMessageDialog(null, "Tomt ip felt");
else if(userfield.getText().length()==0)
JOptionPane.showMessageDialog(null, "Tomt brukernavn felt");
else if(passfield.getPassword().length==0)
JOptionPane.showMessageDialog(null, "Tomt passord felt");
else{
host = hostfield.getText();
host = "jdbc:mysql://" + host;
user = userfield.getText();
char[] pass = passfield.getPassword();
pwd = String.copyValueOf(pass);
}
然后连接到DB
我需要在我的第二个文件中调用这些字符串,我还有文件importet
import test.Login;
JButton Worldselect = new JButton("World");
Worldselect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
Login mysqlcon = new Login();
String hostcon = mysqlcon.host;
hostcon = "jdbc:mysql://" + hostcon;
String usercon = mysqlcon.user;
String pwdcon = mysqlcon.pwd;
Connection conn = DriverManager.getConnection(hostcon,usercon,pwdcon);
但当我这样做的时候,他们会重新调整,这就是为什么?
答案 0 :(得分:0)
简而言之,您构建了一个Login
的实例,如下所示:
Login {
passfield;
userfield = null;
hostfield = null;
host = null;
user = null;
pwd = null;
}
接下来,您尝试访问这些值。当然,他们是空的。
您需要调用方法buttonconClick
来设置这些值,但首先需要设置三个字段实例以防止您将面临的NullPointerException
。完成此操作后,实例将具有您期望的值。
在您的情况下,您应该在ActionListener之外创建Login
实例,其中字段存在,将字段设置为实例。只有在单击时,您将使用方法检查字段值,如果这样做(您应该使用布尔值),尝试连接。
编辑:
以下是您的代码的一部分:
Login mysqlcon = new Login();
String hostcon = mysqlcon.host;
您正在创建实例mysqlcon
,但您直接使用它。您的类中没有构造函数,因此每个字段都为null,^。