2015-04-11 2 views
-1

У меня есть это большое приложение с несколькими классами, и у меня есть система alogin. Итак, после входа пользователя в текст «Добро пожаловать, Гость» должен обновить «Добро пожаловать, имя пользователя». Мой метод «logininfo» - это тот, который обрабатывает его, и использует метод setText(). Вы можете увидеть здесь метод:JLabel.setText не обновляет текст, но getText() возвращает новый текст?

public void loginInfo(String userName) { 
    lblWelcomeGuest.setText("Welcome, "+userName); 
    System.out.println(lblWelcomeGuest.getText()); 
} 

Графический интерфейс показывает «Добро пожаловать, Гость», в то время как мои отпечатки отлаживать-сообщение «Добро пожаловать, Fillefixsweden». Я понятия не имею, в чем проблема, может быть, мне нужно обновиться? Пожалуйста помоги!

Запрошенный комментариями, весь код (без импорта):

public class MainGUI extends JFrame{ 


    private static final long serialVersionUID = 1L; 

    LogIn login= new LogIn(); 
    private JLabel lblWelcomeGuest = new JLabel("Welcome, Guest"); 
    public String uName; 
    private JLabel lblLogIn = new JLabel("Log in"); 
    LoginUI loginui = new LoginUI(); 


public void initialize() { 

    lblLogIn.setFont(new Font("Tahoma", Font.PLAIN, 14)); 
    lblLogIn.setForeground(Color.WHITE); 
    lblLogIn.setBounds(842, 118, 128, 14); 
    lblWelcomeGuest.setBounds(10, 116, 133, 16); 
    lblWelcomeGuest.setFont(new Font("Tahoma", Font.PLAIN, 13)); 
    lblWelcomeGuest.setForeground(Color.WHITE); 
    getContentPane().add(lblWelcomeGuest); 
    getContentPane().add(lblLogIn); 


} 

public void loginInfo(String userName) { 
    lblWelcomeGuest.setText("Welcome, "+userName); 
    lblLogIn.setText("Log out"); 
    System.out.println(lblWelcomeGuest.getText()); 


    } 


} 

Вот полный Основной класс:

public class Main { 
    MainGUI gui; 
    public String username; 


public Main() { 
    System.out.println("Main constructor"); 
    gui = new MainGUI(); 
    gui.initialize(); 
    gui.setVisible(true); 

} 

public static void main(String[] args) { 
    System.out.println("Main"); 
    new Main(); 

} 

} 

А вот метод, который вызывает loginInfo() (другой класс) :

public void cred(String name, String password){ 
    if(new SQL().validate(name, password)){ 
     System.out.println("Logged in"); 
     CloseFrame(); 
     new MainGUI().loginInfo(name); 
    }else{ 
     System.out.println("Credentials does not match!"); 
     System.out.println(name+" "+password); 

    } 
} 
+3

1) Для лучшей помощи рано, опубликовать [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный пример поддающегося проверке) или [SSCCE] (http://www.sscce.org/) (Короткий, самосохраненный, правильный пример). 2) Используйте логическую и согласованную форму отступающих кодовых строк и блоков. Отступы предназначены для того, чтобы поток кода стал проще следовать! –

+0

Да, lblLogIn - еще один ярлык. Я удалю его из кода. – Fillefixsweden

+1

Если label.setText() не изменяет то, что отображается на экране, а System.out.println (label.getText()) отображает то, что отличается от того, что отображается на экране, наиболее вероятной причиной является что JLabel, отображаемый на экране, не совпадает с тем, на котором вы вызываете setText() и getText(). Но поскольку вы решили не показывать нам свой код, мы не можем помочь дальше. –

ответ

1

Каждый раз, когда вы звоните new MainGUI() вы создаете новый и отличный I nstance (object), который полностью уникален для всех остальных. Вы вызываете это один раз, чтобы создать видимый графический интерфейс, а затем создать другое, чтобы вызвать ваш метод loginInfo() так же, как мы подозревали. Решение. Создайте один экземпляр MainGUI и вызовите все соответствующие методы.

+0

Как я могу это сделать без использования «нового»? – Fillefixsweden

+0

Получил это сейчас, спасибо. – Fillefixsweden

+0

@Fillefixsweden: отлично! –

0

Nevermind, решить ее самостоятельно.

Я создал новый экземпляр GUI в другом классе, который покрывал мой пораженный GUI. Решено, не создавая новый экземпляр, а используя старый.

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