Methoden Eine Methode aus einer anderen Klasse aufrufen

Lexstar

Neues Mitglied
Hallo erstmal, ich bin Neueinsteiger in der Java-Programmiersprache, also nehmt es mir bitte bitte nicht übel!

Ich probiere seit einer halben Stunde dasselbe und kommen nicht weiter. Erstmal zum wesentlichen:

Ich habe eine GUI (von NetBeans generiert):

Java:
package main;


import javax.swing.DefaultListModel;

public class test extends javax.swing.JFrame {

    public test() {
        listModel = new DefaultListModel<>();
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jList1.setModel(listModel);
        jScrollPane1.setViewportView(jList1);

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane2.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane2)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        
   
    private DefaultListModel<String> listModel;
    
    public void loadEntries() {
        listModel.addElement("1. Test");
        listModel.addElement("2. Test");
        listModel.addElement("3. Test");
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration                   
}

Und eine Main-Klasse:

Java:
package main;


public class main extends test {

    public static void main(String[] args) {
        new test().setVisible(true);
        loadEntries();
    }
}

Doch
Code:
loadEntries();
will nicht funktionieren! (non-static method loadEntries() cannot be referenced from a static context). Bitte verzeiht mir, ich weiß dass jeder die Lösung weiß, außer ich... Hatte davor nur mit AutoIt zu tun, wollte endlich mal was ordentliches aneignen.

Mit freundlichen Grüßen

P. S. Eine kurze Beschreibung reicht, ich weiß dass die Lösung für euch offensichtlich ist..
 
Mit deinem aktuellen Quellcode kannst du sie nicht aufrufen, aber wenn du deiner Instanz von Test einen Namen gibst, dann wird es vielleicht genauso gehen, wie du auch
Code:
testName.setVisible(true);
aufrufen kannst ;-)

Und: Suche mal in der Forensuche nach statisch / nicht statisch.. da wirst du viel zum dem Thema finden.
 
Java:
package main;

public class main  { // Vererbung ist hier völlig unangebracht

    public static void main(String[] args) {
        test t = new test();
        t.setVisible(true);
        t.loadEntries();
    }
}

Außerdem solltest du als Anfänger die Finger von GUI-Programmierung weglassen und dir erstmal Grundlagen und Code Conventions anschauen.
 
Java:
package main;

public class main  { // Vererbung ist hier völlig unangebracht

    public static void main(String[] args) {
        test t = new test();
        t.setVisible(true);
        t.loadEntries();
    }
}

Außerdem solltest du als Anfänger die Finger von GUI-Programmierung weglassen und dir erstmal Grundlagen und Code Conventions anschauen.

Danke für deine Hilfe... Ich werde mir deinen Rat zu Herzen nehmen 🙂
 
die JFrame#setVisible() sollte übrigens immer die letzte Anweisung sein, um eine GUI auf den Schirm zu zaubern. Nur so kannst du sichergehen, dass auch wirklich alle Komponenten gezeichnet werden (stell dir vor, was passiert, wenn deine loadEntries noch um einiges länger wäre, dann würdest du Komponenten hinzufügen, nachdem das Hauotfenster geöffnet wurde...). Um das in deinem Code zu bewerkstelligen, würde ich folgendes verwenden:
Java:
Test t = new Test("Klassennamen werden übrigens größ geschrieben");
t.loadEntries(true);
t.setVisible(true);
 

Zurück
Oben