2016-11-29 19 views
-1

所以我得到了這些字符串我我的主文件名爲「登錄」的是類從另一個文件中調用字符串

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); 

但是,當我這樣做,他們retun emty,爲什麼呢?

+2

如果它可以很容易地適合您的問題,請發佈「登錄」的完整代碼。 –

+0

你登錄代碼的例子不能編譯。我的猜測是你遺漏了一些必不可少的東西。這些值在哪裏初始化? – hotzst

+1

你試過調試過嗎? –

回答

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,^。

+0

我想我明白你的意思,但如何實現它是另一回事(不是很熟悉編碼)我想我忘了要提到有兩個按鈕,每個文件中有一個按鈕,我希望它從第一個按鈕單擊中獲取信息。生病看起來更多。 – Leifus

+0

@Leifus,理論上說,登錄不應該直接與字段一起工作,您應該從構造函數和/或setter向他提供String。到時候,這取決於你。我無法真正幫助你。 – AxelH

+0

你完全搞錯了,OP要求重用存儲在DB類 –

相關問題