У меня есть это большое приложение с несколькими классами, и у меня есть система 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);
}
}
1) Для лучшей помощи рано, опубликовать [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный пример поддающегося проверке) или [SSCCE] (http://www.sscce.org/) (Короткий, самосохраненный, правильный пример). 2) Используйте логическую и согласованную форму отступающих кодовых строк и блоков. Отступы предназначены для того, чтобы поток кода стал проще следовать! –
Да, lblLogIn - еще один ярлык. Я удалю его из кода. – Fillefixsweden
Если label.setText() не изменяет то, что отображается на экране, а System.out.println (label.getText()) отображает то, что отличается от того, что отображается на экране, наиболее вероятной причиной является что JLabel, отображаемый на экране, не совпадает с тем, на котором вы вызываете setText() и getText(). Но поскольку вы решили не показывать нам свой код, мы не можем помочь дальше. –