2015-07-27 2 views
0

Что моя программа должна делать, когда пользователь входит в систему, имя пользователя, которое они ввели, должно храниться во втором классе. Причиной этого является имя пользователя, которое будет отображаться в верхнем правом углу каждого открытого JFrame.Сохранять пользовательский ввод во втором классе от JFrame

Итак, все, что я хочу знать, это как сохранить имя пользователя в классе (Именованный пользовательLogin.java), который находится в фоновом режиме, поэтому, когда пользователь открывает, например, инвентарь JFrame, имя пользователя из пользовательского лога будет отображаться в текстовое поле, то, если они перейдут к примеру salesList JFrame, имя пользователя будет вызываться из класса userlogin и отображаться в текстовом поле на этом JFrame.

Вот мой кодирующая userlogin.java

public class userlogin{ 
    //declare user strig for logged on user 
    public String users; 
    //default contructor 
    public LoggedonUser() 
    { 

    } 

    public void setUser(String loggeduser) 
    { 
     users = loggeduser; 
    } 
} 

Как изменить этот класс для того, чтобы хранить и держать пользовательский ввод для вызова из любого JFrame на протяжении использования системы.

Многого ценится за помощью, чтобы получить эту работу :)

+4

* ".. каждый открывшийся JFrame." * Необходимо создать только ** рамку **. 1) См. [Использование нескольких JFrames, Good/Bad Practice?] (Http://stackoverflow.com/q/9554636/418556) 2) Вместо этого используйте ['CardLayout'] (http://download.oracle. com/javase/8/docs/api/java/awt/CardLayout.html), как показано в [этом ответе] (http://stackoverflow.com/a/5786005/418556). –

+2

Вы можете сделать 'user' статическим String и' setUser() 'статическим методом, тогда при вызове JFrames вы можете получить имя с' userLogin.users' – BoDidely

+1

Как уже упоминалось, вы должны использовать __CardLayout__ и просто предоставить [TitledBorder] (https://docs.oracle.com/javase/tutorial/uiswing/components/border.html#code) к 'JPanel', имеющему __CardLayout__ Так просто говоря, просто назначьте имя пользователя только один раз на' TitledBorder 'и он останется как есть, на всех взглядах :-) –

ответ

1

Надеется, что этот код помочь вам;

На странице входа добавить следующий метод; примечание: usernametxt это текстовое поле и это является публичной

public void showUsername(){ 
    String uname = usernametxt.getText(); 

} 

В других кадрах;

примечание: username_lbl является Ярлык, что получить имя пользователя

public void getUsername(String user){ 
    username_lbl.setText("Logged in as : "+user); 
} 
0

Вы также можете использовать static переменную для этого

создать статическую переменную

public static String USERNAME=""; 

и когда вы получите имя пользователя от пользователя, вы можете,

USERNAME=txt_username.getText(); 

Затем вы можете использовать в любом классе в проекте в качестве

userLogin.USERNAME; 

NB: -clear статического значения в момент выхода.

Смежные вопросы