Java: List Item hinzufügen von anderer Klasse

    Java: List Item hinzufügen von anderer Klasse

    Hallo,

    mal wieder ein Java-Problem.

    Ich habe 2 Klassen:
    - Menu
    - MiniDataBaseApp

    In Menu ist meine GUI, d.h. hier ist meine grafische Oberfläche, meine Objekte etc. Meine Liste wird also auch in Menu erstellt, was ich gerne auch so lassen würde.
    Es soll aus der Klasse MiniDataBaseApp von Menu aus eine Datenbankverbindung aufgebaut werden und eine Tabelle ausgelesen werden, das klappt auch soweit.

    Jetzt sollen allerdings die Ergebnisse der Abfrage als items in der Liste hinzugefügt werden und das will noch nicht so richtig..
    Ich kann die Werte von MiniDataBaseApp, die ausgelesen wurden zwar in einem String über eine Methode in Menu übergeben und diese stimmen auch überein, wenn ich sie mit System.out.println ausgebe, aber wenn ich die Werte in der Methode in die Liste einfügen will, passiert nichts. Der Text wird weiterhin ausgegeben, keine Fehlermeldung, keine Liste..

    Ich bin am verzweifeln, ich habe schon alles mögliche probiert und im Internet steht dazu auch nichts wirklich brauchbares.. nur das, was ich bereits probiert habe.

    Klasse Menu
    Spoiler anzeigen

    Java-Quellcode

    1. package knowledgebase;
    2. import java.sql.SQLException;
    3. /**
    4. *
    5. * @author Killian
    6. */
    7. public class Menu extends javax.swing.JFrame
    8. {
    9. public Menu()
    10. {
    11. initComponents();
    12. }
    13. public void setListItems(String items)
    14. {
    15. list1.add(items);
    16. System.out.println(items);
    17. }
    18. @SuppressWarnings("unchecked")
    19. // <editor-fold defaultstate="collapsed" desc="Generated Code">
    20. private void initComponents() {
    21. list1 = new java.awt.List();
    22. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    23. setTitle("Knowledge Base");
    24. setBackground(new java.awt.Color(255, 255, 255));
    25. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    26. getContentPane().setLayout(layout);
    27. layout.setHorizontalGroup(
    28. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    29. .addGroup(layout.createSequentialGroup()
    30. .addComponent(list1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
    31. .addGap(0, 502, Short.MAX_VALUE))
    32. );
    33. layout.setVerticalGroup(
    34. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    35. .addComponent(list1, javax.swing.GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE)
    36. );
    37. pack();
    38. }// </editor-fold>
    39. public static void main(String args[])
    40. {
    41. try {
    42. for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
    43. if ("Nimbus".equals(info.getName())) {
    44. javax.swing.UIManager.setLookAndFeel(info.getClassName());
    45. break;
    46. }
    47. }
    48. } catch (ClassNotFoundException ex) {
    49. java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    50. } catch (InstantiationException ex) {
    51. java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    52. } catch (IllegalAccessException ex) {
    53. java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    54. } catch (javax.swing.UnsupportedLookAndFeelException ex) {
    55. java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    56. }
    57. //</editor-fold>
    58. java.awt.EventQueue.invokeLater(new Runnable()
    59. {
    60. public void run()
    61. {
    62. new Menu().setVisible(true);
    63. MiniDataBaseApp new_db = new MiniDataBaseApp();
    64. try
    65. {
    66. // Verbindung herstellen
    67. new_db.createConnection();
    68. // Ergebnisse anzeigen.
    69. new_db.createList("personen");
    70. // Verbindung schließen
    71. new_db.closeProgramm();
    72. }
    73. catch (SQLException e)
    74. {
    75. System.err.println("SQL Fehler - " + e.getLocalizedMessage());
    76. e.printStackTrace();
    77. }
    78. catch (ClassNotFoundException e)
    79. {
    80. System.err.println("Der Datenbank treiber wurde nicht gefunden. - " + e.getLocalizedMessage());
    81. e.printStackTrace();
    82. }
    83. }
    84. });
    85. }
    86. // Variables declaration - do not modify
    87. public java.awt.List list1;
    88. // End of variables declaration
    89. }




    Klasse MiniDataBaseApp
    Spoiler anzeigen

    Java-Quellcode

    1. package knowledgebase;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.sql.Statement;
    7. /**
    8. *
    9. * @author Killian
    10. */
    11. public class MiniDataBaseApp
    12. {
    13. private String db_host = "localhost";
    14. private String db_port = "3306";
    15. private String db_user = "root";
    16. private String db_pass = "";
    17. private String db_base = "test";
    18. private static final String DRIVER = "com.mysql.jdbc.Driver";
    19. private Connection connection = null;
    20. public void createConnection() throws SQLException, ClassNotFoundException
    21. {
    22. Class.forName(DRIVER);
    23. String mySqlUrl = "jdbc:mysql://" + db_host + ":" + db_port + "/" + db_base;
    24. connection = DriverManager.getConnection(mySqlUrl, db_user, db_pass);
    25. }
    26. public void createList(String nameOfTable) throws SQLException
    27. {
    28. String query = "SELECT * FROM " + nameOfTable;
    29. Statement stmt = connection.createStatement();
    30. ResultSet rs = stmt.executeQuery(query);
    31. int columns = rs.getMetaData().getColumnCount();
    32. Menu menu1 = new Menu();
    33. menu1.setListItems("Test");
    34. System.out.println("Alle Einträge zu den Personen ");
    35. System.out.println();
    36. // Ich zeige die Tabellenspaltennamen an.
    37. for (int i = 1; i <= columns; i++)
    38. {
    39. System.out.print(rs.getMetaData().getColumnLabel(i) + "\t\t");
    40. }
    41. System.out.println();
    42. System.out.println();
    43. // Ich zeige den Inhalt der Tabelle an. Normaler Weise würde man die
    44. // Ergebnisse in eine Liste schreiben und diese zurück liefern.
    45. while (rs.next())
    46. {
    47. for (int i = 1; i <= columns; i++)
    48. {
    49. System.out.print(rs.getString(i) + "\t\t");
    50. }
    51. System.out.println();
    52. }
    53. rs.close();
    54. stmt.close();
    55. }
    56. public void closeProgramm() throws SQLException
    57. {
    58. this.connection.close();
    59. }
    60. public static void main(String[] args)
    61. {
    62. }
    63. }


    (-> Zeile 39 & 41 sind entscheidend)