onLoad-Methode in Java?

shocking

Mitglied
Hi,

ich bin recht neu in der GUI-Programmierung mit Java. Mein derzeitiges Problem ist, dass ich eine Methode suche, die der Methode onLoad in C# entspricht.
Ich muss sicherstellen, dass die Verbindung zur DB hergestellt wird, bevor mein Main-JFrame gezeichnet wird, da einige enthaltene Elemente bereits aus der DB gefüllt werden.

Unter C# habe ich die Datenbankverbindung in einem solchen Fall in die onLoad-Methode gepackt, die beim Laden der Form angesprochen wurde, bevor der eigentliche Kontruktor benutzt wurde.

Gibt es so etwas auch in Java? Wenn nicht, wie könnte ich sonst dafür sorgen? Die Verbindung herzustellen, bevor initComponents aufgerufen wird, funktioniert leider nicht ;-(

Gruß und Dank
shocking
 
Dein JFrame wird ja erst gezeichnet, wenn du setVisible(true) aufrufst. Also theoretisch kannst du doch davor alles Mögliche überprüfen... ?!

Java:
public void int main(String args[]) {

    // check Connection
    JFrame frame = new JFrame();
    frame.setVisible(true);
}

Verstehe das Problem nicht ganz genau...
 
Zuletzt bearbeitet von einem Moderator:
Hi,

bei mir sieht die main so aus:

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmMain().setVisible(true);
}
});
}

Hast du das in etwa so gemeint? (Die Überprüfung ist im Konstruktor):

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
frmMain frame = new frmMain();
frame.setVisible(true);
}
});
}

Wenn ich das schreibe, kriege ich eine Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.awt.SunHints$Value.hashCode(SunHints.java:144)
at java.awt.font.FontRenderContext.hashCode(FontRenderContext.java:335)
at sun.font.FontDesignMetrics$MetricsKey.init(FontDesignMetrics.java:199)
at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:267)
at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:910)
at javax.swing.JComponent.getFontMetrics(JComponent.java:1592)
at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:227)
at javax.swing.plaf.basic.BasicLabelUI.getMinimumSize(BasicLabelUI.java:253)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1707)
at javax.swing.GroupLayout$ComponentSpring.calculateNonlinkedMinimumSize(GroupLayout.java:2933)
at javax.swing.GroupLayout$ComponentSpring.calculateMinimumSize(GroupLayout.java:2897)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1315)
at javax.swing.GroupLayout$ComponentSpring.calculatePreferredSize(GroupLayout.java:2904)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1325)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1604)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1590)
at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1568)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1325)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1604)


Und nun? Vielleicht hilft es dir, wenn ich den Kontruktor dsazu packe:

public frmMain() {
_dbConn = DBConnection.getInstance();
_dbConn.getConnection();
initComponents();
fillComboboxes();
fillJTables();
}

und die Überprüfung in DBConnection:

public Connection getConnection(){
try {
if (_conn == null){
setDataSource();
_conn = _ods.getConnection();
}
}
catch (SQLException ex) {
frmConnect connection = new frmConnect(); //Form zur EIngabe der Daten und SPeicherung
connection.setVisible(true);
}
return _conn;
}
 
Zurück