Verknüpfen von Gui mit Klassen

OVetS

Mitglied
Hallo!

Also ich habe ein Problem mit der dem Anmelden der Steuerungsklasse an der Gui. Hier ein kleines Beispiel...

Die Gui:
Java:
public class Gui extends javax.swing.JFrame {

    public Gui() {
        initComponents();
    }

    private void initComponents() {

        label = new javax.swing.JLabel();
        button = new javax.swing.JButton();
        textfield = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        label.setText("1");

        button.setText(">>>>");
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonActionPerformed(evt);
            }
        });

        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(label)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(button)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(textfield, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(19, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(label)
                    .addComponent(button)
                    .addComponent(textfield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );

        pack();
    }

    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
              ctrl.gebe();
    }


    public void anmelden(Ctrl ctrl){
        this.ctrl = ctrl;
    }


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

        Gui gui = new Gui();
        Ctrl ctrl = new Ctrl(gui);
        gui.anmelden(ctrl);
    }

    private javax.swing.JButton button;
    public javax.swing.JLabel label;
    public javax.swing.JTextField textfield;
    private Ctrl ctrl;

}

Die Ctrl
Java:
public class Ctrl {

    private Gui gui;

    public Ctrl(Gui gui){

        this.gui = gui;
    }

    public void gebe(){

        gui.textfield.setText(gui.label.getText());
    }

}

Kann mir jemand sagen was ich falsch mache? weiß nichtmehr weiter :(
Danke schonmal im voraus.

mfg
 

OVetS

Mitglied
ah ok....stimmt^^

das problem ist natürlich, dass es nicht funktioniert!

ich bekomme eine nullpointerexception.
gui ist in der main methode noch gesetzt, aber in anmelden auf einmal null.... und ich weiß nicht warum oder was ich da falsch mache.
 
M

maki

Gast
Wenn du jetzt noch verrätst wo die NPE fliegt steigen deine Chancen auf sinnvolle Antworten ;)

Tipp: Poste mal den Stacktrace der Exception
 

eRaaaa

Top Contributor
Java:
   public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Gui().setVisible(true);
            }
        });
 
        Gui gui = new Gui();
        Ctrl ctrl = new Ctrl(gui);
        gui.anmelden(ctrl);
    }

wieso erstellst du 2 x ein Objekt von Gui ? Macht keinen Sinn! Und der Fehler liegt daran, dass du nur dem Gui-Objekt das Ctrl-Objekt mit anmelden übergibst, welches nicht sichtbar ist :)
 

OVetS

Mitglied
ok, neuer versuch... :D (tut mir leid, bin neu hier)

damit die zeilenangaben auch hinhauene...

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Gui.java
 *
 * Created on 28.05.2010, 10:28:23
 */

package Linktest;

/**
 *
 * @author
 */
public class Gui extends javax.swing.JFrame {

    private Ctrl ctrl;

    /** Creates new form Gui */
    public Gui() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        label = new javax.swing.JLabel();
        button = new javax.swing.JButton();
        textfield = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        label.setText("1");

        button.setText(">>>>");
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonActionPerformed(evt);
            }
        });

        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(label)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(button)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(textfield, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(19, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(label)
                    .addComponent(button)
                    .addComponent(textfield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );

        pack();
    }// </editor-fold>

    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here

        ctrl.gebe();

    }


    public void anmelden(Ctrl ctrl){
        this.ctrl = ctrl;
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Gui().setVisible(true);
            }
        });

        Gui gui = new Gui();
        Ctrl ctrl = new Ctrl(gui);
        gui.anmelden(ctrl);
    }

    // Variables declaration - do not modify
    private javax.swing.JButton button;
    public javax.swing.JLabel label;
    public javax.swing.JTextField textfield;
    // End of variables declaration

}

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Linktest;

/**
 *
 * @author
 */
public class Ctrl {

    private Gui gui;

    public Ctrl(Gui gui){

        this.gui = gui;
    }

    public void gebe(){

        gui.textfield.setText(gui.label.getText());
    }

}

Fehler
Java:
run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Linktest.Gui.buttonActionPerformed(Gui.java:80)
        at Linktest.Gui.access$000(Gui.java:18)
        at Linktest.Gui$1.actionPerformed(Gui.java:47)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 

OVetS

Mitglied
ok vielen Dank für die Hilfe :)

...der Fehler lag daran, dass das Gui Objekt 2mal erstellt wurde

so ist es richtig:

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

        final Gui gui = new Gui();

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                gui.setVisible(true);
            }
        });
        
        Ctrl ctrl = new Ctrl(gui);
        gui.anmelden(ctrl);
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Klassen verknüpfen Java Basics - Anfänger-Themen 1
K Klassen verknüpfen Java Basics - Anfänger-Themen 10
E klassen verknüpfen Java Basics - Anfänger-Themen 2
E Klassen verknüpfen Java Basics - Anfänger-Themen 9
Screen Klassen verknüpfen, Swingobjekte mit Klassen verknüpfen Java Basics - Anfänger-Themen 13
S Verknüpfen von Klassen Java Basics - Anfänger-Themen 2
E Klassen verknüpfen Java Basics - Anfänger-Themen 11
Zeppi OOP Methoden mit einander Verknüpfen Java Basics - Anfänger-Themen 6
T JRadioButton verknüpfen Java Basics - Anfänger-Themen 1
A Objekte verknüpfen Java Basics - Anfänger-Themen 2
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
K Arrays verknüpfen Java Basics - Anfänger-Themen 52
J Hilfe beim "Verknüpfen" von zwei Klasse Java Basics - Anfänger-Themen 15
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
J Methoden verknüpfen Java Basics - Anfänger-Themen 15
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
1 Zahlen mit Zahlen verknüpfen Java Basics - Anfänger-Themen 2
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
S Strings verknüpfen Java Basics - Anfänger-Themen 9
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
O Objekte verknüpfen? Java Basics - Anfänger-Themen 7
H Bedingungen miteinander verknüpfen Java Basics - Anfänger-Themen 2
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
J if Bedingungen verknüpfen Java Basics - Anfänger-Themen 8
J Variablen Rechenzeichen und Zahlen verknüpfen für einen Taschenrechner Java Basics - Anfänger-Themen 17
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
B GUI- Klasse mit Hauptklasse "verknüpfen"? Java Basics - Anfänger-Themen 13
L ArrayList Elemente verknüpfen Java Basics - Anfänger-Themen 2
K Listen miteinander verknüpfen Java Basics - Anfänger-Themen 4
sqsh jtable mit jlabels verknüpfen Java Basics - Anfänger-Themen 2
P "Enter"-Taste mit Button verknüpfen Java Basics - Anfänger-Themen 3
T 2D-Array mit GUI verknüpfen Java Basics - Anfänger-Themen 4
S Programm mit Website verknüpfen Java Basics - Anfänger-Themen 3
Z Programmteile verknüpfen Java Basics - Anfänger-Themen 9
S 2 JComboBoxen miteinander verknüpfen Java Basics - Anfänger-Themen 4
H Java aus Netbeans mit innoDB Datenbank verknüpfen. Java Basics - Anfänger-Themen 7
J 2 Objekte verknüpfen Java Basics - Anfänger-Themen 5
U Werte miteinander verknüpfen und sortieren Java Basics - Anfänger-Themen 20
D jMenubar mit Button verknüpfen Java Basics - Anfänger-Themen 3
G Button mit Internet verknüpfen? Java Basics - Anfänger-Themen 10
G Hashset verknüpfen mit BufferedReader Java Basics - Anfänger-Themen 18
S Jar Datei mit javaw verknüpfen Java Basics - Anfänger-Themen 3
S Noch ungelöst ! Klasse JTable und Klasse Drucken verknüpfen. Java Basics - Anfänger-Themen 8
J 2 Fenster miteinander verknüpfen Java Basics - Anfänger-Themen 6
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben