У меня проблема с установкой текста JLabel
с помощью метода в классе, создающего графический интерфейс из другого класса, вызывающего этот метод.Метод для установки JLabel
вызывается вне GUI, но при вызове изнутри класса GUI он работает.Я протестировал метод getText()
на метке после его вызова извне класса GUI, и он показывает, что метка была обновлена.Я понимаю, что это, вероятно, проблема с краской или обновлением Swing, но я не знаю, что делать.Я пробовал repaint()
и revalidate()
на этикетке, а затем на панели, на которой он находится.Вот мой текущий код:
public void setStatusLabel(String statusEntered) {
//Shows the variable statusEntered has been received
System.out.println(statusEntered);
//Not working
status_label.setText(statusEntered);
//Used this to check if the label receives the data. It does.
String status = status_label.getText();
System.out.println(status);
}
И контекст, в котором я его называю.Настраивает соединение с базой данных
//GUI Class reference
MainWindow mainwindow = new MainWindow();
public void connect(){
Connection conn = null;
try {
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost:3306";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password);
//This works
System.out.println("Connection Established");
//The issue is with this guy
mainwindow.setStatusLabel("Connection");
}
catch(Exception e) {
System.err.println("Failed to connect to database");
mainwindow.setStatusLabel("No connection");
}
}
Любая помощь с этим будет отличной, или если у вас есть ссылки на предложения, это тоже будет здорово!Спасибо за помощь.
Вот мой главный:
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
}