2015-10-06 62 views
0
public class mainWindow extends JFrame { 
private JTextField jtfCustomerName=new JTextField(8); 
private JTextField jtfPassword=new JTextField(20); 
Button login; 

public mainWindow(){ 

    JPanel p1=new JPanel(new GridLayout(3,2)); 
    p1.add(new JLabel("Customer name:")); 
    p1.add(jtfCustomerName); 
    p1.add(new JLabel("Password:")); 
    p1.add(jtfPassword); 
    login=new Button("login"); 
    p1.add(login); 
    add(p1,BorderLayout.CENTER); 
    login.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent event){ 
      System.out.println("test.."); 



     } 
    }); 



} 


public String getAccNum(){ 
    return jtfCustomerName.getText(); 
} 
public String getPassword(){ 
    return jtfPassword.getText(); 
} 
    } 

所以這是一個簡單的GUI類,用戶可以輸入accountNum和password,然後單擊一個按鈕。將JTextField從Frame傳遞到java中的另一個類

public class CustomerLoginGUIAPP { 


    public static void main(String[] args) { 


     mainWindow main=new mainWindow(); 
     main.setVisible(true); 
     main.setSize(600,400); 
     main.setLocation(300,300); 
     System.out.println("Account num is " + ????); 
     }} 

這是主類,我想在這裏獲得帳號和密碼。我嘗試了幾種方法,我都獲得NULL值。我讀了一些帖子,我知道我需要使用構造函數。我不太瞭解它形成其他職位,所以我不得不尋求幫助。

public class customer { 


private String AccNum; 
private String password; 

public customer(String AccNum,String password){ 
this.AccNum=AccNum; 
this.password=password; 

}  

public String getAccNum(){ 
return AccNum; 
} 

public String getPassword(){ 
return password; 
} 
public void setAccNum(String AccNum) { 
    this.AccNum = AccNum; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 
} 

因爲我知道我應該使用構造函數,所以我創建了這個類。但我不知道如何真正使用它。我知道基本的構造函數(客戶c =新客戶(「s123」,「abdcd」);然後如果我想獲得accNum,我可以使用「c.getAccNum()」)。

回答

0

一個很好的模式是有你的窗口中創建某種結果對象是誰顯示窗口時,窗口消失可以得到的人。我會改變你的主窗口類是這樣的:

public class MainWindow extends JFrame { 
    private JTextField jtfCustomerName=new JTextField(8); 
    private JTextField jtfPassword=new JTextField(20); 
    private Customer result; 

    public MainWindow(){ 

     JPanel p1 = new JPanel(new GridLayout(3,2)); 
     p1.add(new JLabel("Customer name:")); 
     p1.add(jtfCustomerName); 
     p1.add(new JLabel("Password:")); 
     p1.add(jtfPassword); 
     Button login = new Button("login"); 
     p1.add(login); 
     add(p1,BorderLayout.CENTER); 
     login.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent event){ 
       result = new Customer(jtfCustomerName.getText(), jtfPassword.getText()); //set the result here 
       setVisible(false); //hide this window 
      } 
     }); 
    } 

    public Customer getResult() 
    { 
     return result; 
    } 
} 

然後你訪問它在你的CustomerLoginGUIAPP像這樣:

public class CustomerLoginGUIAPP { 
    public static void main(String[] args) { 
     MainWindow main= new MainWindow(); 
     main.setSize(600,400); 
     main.setLocation(300,300); 
     main.setVisible(true); 
     Customer customer = main.getResult(); //get the saved result 
     System.out.println("Account num is " + customer.getAccNum()); 
    } 
} 

然後讓你的客戶類相同。

+0

請注意,我大寫所有類名都遵循Java命名約定。 http://www.oracle.com/technetwork/java/codeconventions-135099.html如果您直接複製/粘貼到現有文件中,您將會遇到一些錯誤。 – Lunchbox

0

您應該可以將對象投射到您的屏幕上 鏈接圖像樣式/頭列表塊引用代碼HTML高級幫助» r mainWindow。這樣你可以輸入公共方法。

//像這樣做:

public class mainWindow { 
.... 
private static customer person; // NEW 

public static void main(String[] args) { 
    mainWindow main=new mainWindow(); 
    main.setVisible(true); 
    main.setSize(600,400); 
    main.setLocation(300,300); 
    login.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent event){ 
      System.out.println("test.."); 
      final int accNum = getAccNum(); 
      final String password = getPassword(); 
      createCustomer(accNum, password); 
     } 
    }); 
} 

private static void createCustomer(int accNum, String password) { 
    person = new customer(accNum, password); 
    System.out.println("It works -> Customer: " + person.getAccNum() + " - " + person.getPassword()); 
} 
+0

它只打印「帳號是」... – Jason6666

+0

這樣它創建一個客戶與您插入的accnum和密碼 –

+0

我明白你在做什麼,但我已經嘗試過。我再次嘗試,它不起作用。它只會打印「它的工作 - >客戶 - 」在我輸入accNum和密碼之前。 – Jason6666

相關問題