nullpointerExce. Gui Object weitergabe

osion

Bekanntes Mitglied
Hallo

Situation: Am Anfang ruft die main eine GUI auf, die GUI wird als Object immer weitergereicht (Anfang mit this) und mit this.gui=gui; in der neuen Klasse gespeichert. Normalerweisse werden Arrays, Vecotren usw. abgefragt, welche in der Class erzeugt wurden von GUI.

Objekt welches Weitergegeben wird: public class DestkopCleanGui extends JFrame {

Problem: Je nachdem wo ich das Object, z. B. XY classXY=new XY(gui) für die neue Klasse erzeuge, kann ich auf GUI zugreiffen oder es gibt halt ne Fehlermeldung (nullpointerExce).

Es gibt hier auch Unterschied, manchmal kann ich das Object für die neue Klasse in der Class erzeugen, manchmal muss ich es in der Methode und manchmal direkt before ich ne Methode von der neuen Klasse aufrufen.

Frage:Ich frage mich was dass Problem sein könnte.


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at desktopClean.TableForFileTypMainChangerHandler.checkValuesInOwnListAndWriteNew(TableForFileTypMainChangerHandler.java:65)
at desktopClean.TableForOverviewMainChangerHandler.yesOrNowChanger(TableForOverviewMainChangerHandler.java:52)
at desktopClean.DestkopCleanGui$5.tableChanged(DestkopCleanGui.java:606)
at javax.swing.table.AbstractTableModel.fireTableChanged(Unknown Source)
at javax.swing.table.AbstractTableModel.fireTableCellUpdated(Unknown Source)
at javax.swing.table.DefaultTableModel.setValueAt(Unknown Source)
at javax.swing.JTable.setValueAt(Unknown Source)
at javax.swing.JTable.editingStopped(Unknown Source)
at javax.swing.AbstractCellEditor.fireEditingStopped(Unknown Source)
at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(Unknown Source)
at javax.swing.DefaultCellEditor.stopCellEditing(Unknown Source)
at javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

 
Zuletzt bearbeitet:
Du hast irgendetwas nicht initialisiert steht in deinem log java.lang.NullPointerException. Es wäre hilfreich, wenn du präzise Aussagen zu deinem Problem machen würdest, ggf. ein Codeschnipsel. Es ist nicht hilfreich mit Worten wie " Arrays, Vecotren" herumzu Jonglieren.
Weitere dinge, die mir aufgefallen sind, sind folgende...
1. Wieso möchtest du ein GraphicalUserInterface Objekt herumreichen? Dies ist die graphische Benutzeroberfläche, die wird nicht rumgereicht. Diese Benutzeroberfläche holt sich dass, was sie braucht, und nicht andersrum.
2. Weist du was der "this" Operator für eine Funktion hat?
3. Wieso erzeugt das GUI irgendwelche Sachen? Das GUI hat sich um das Aussehen und nicht um die Funktion zu kümmern. Wenn das GUI etwas erstellt sind es Buttons, Textfelder etc., die dann die Funktionen an andere Klassen delegiert.

classXY=new XY(gui) <--- so wird keine Instanz einer Klasse erzeugt!
XY xy = new XY(
); <--- so wird eine Instanz einer Klasse erzeugt! (Wie bereits erwähnt die Benutzeroberfläche wird nicht rumgereicht)


Versuch dein Problem schrittweise zu lokalisieren. Wenn du denkst du hast die entscheidende stelle gefunden, poste ein Codeschnipsel oder versuch deine Frage zu präzisieren. Dann kann dir auch jemand helfen.
 

osion

Bekanntes Mitglied
1. Ich reiche die herum um die GUI zu änderen, z. B. Texte, JTable usw.
2. this gibt das aktuelle Object zurück, in welcher this aufgerufen wird, somit is this.a=a eigentlich ClassHere.a=a.
3. Evtl. sollte die Main eine andere Klasse aufrufen und das ruft die GUI auf welche Static ist und dort all die Vectoren usw. reinkopieren, welche vom Anfang bis zum Ende bestehen müssen (solange dieser Programm Part offen ist).
 

osion

Bekanntes Mitglied
Ich werde zuerst alle Vectoren, ArrayList usw. (ca. 30) von der GUI in einer anderen Klasse auslagern und dann werde ich die GUI nicht mehr weitergeben, sondern direkt über die Klasse aufrufen, was ja gehen sollte , weil es static ist.

Falls ich danach weiterhin Probleme habe, werde ich mich wieder melden.
 

njans

Top Contributor
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at desktopClean.TableForFileTypMainChangerHandler.checkValuesInOwnListAndWriteNew(TableForFileTypMainChangerHandler.java:65)
Das sagt dir dann schon, wo der Fehler fliegt. Steht sogar die Klasse und die Zeile dabei ;-)
Das Problem ist, ganz simpel, du hast eine Referenz auf ein Objekt, die hat den Wert null und du versuchst darauf etwas aufzurufen.

Wenn ich das lese:
Je nachdem wo ich das Object, z. B. XY classXY=new XY(gui) für die neue Klasse erzeuge, kann ich auf GUI zugreiffen oder es gibt halt ne Fehlermeldung (nullpointerExce).

Dann frage ich mich, ob da nicht etwas mit deiner Struktur bogus ist. Ich würde vermuten, du hast in verschiedenen Objekten referenzen auf dein gui Objekt und du setzt die Referenz einfach nicht bei allen, sondern nur bei einigen. Als resultat kriegst du dann, je nachdem, wo du die Variablen setzt, keine NPE und an anderer Stelle, eine NPE.

Es gibt hier auch Unterschied, manchmal kann ich das Object für die neue Klasse in der Class erzeugen, manchmal muss ich es in der Methode und manchmal direkt before ich ne Methode von der neuen Klasse aufrufen.
Das wird mir nicht klar. Wieso "musst" du das? Ist das jemand anderes Code? Ich denke mal, das ganze wäre einfacher zu beantworten, wenn du mal ein bisschen deines Codes hier reinstellst.

@OutOfBeerExept.

classXY=new XY(gui) <--- so wird keine Instanz einer Klasse erzeugt!
XY xy = new XY(
); <--- so wird eine Instanz einer Klasse erzeugt! (Wie bereits erwähnt die Benutzeroberfläche wird nicht rumgereicht

classXY=new XY(gui); Das ist ein vollkommen akzeptabler Ausdruck, sofern die deklarierte Variable classXY einen Skopus hat, der diesen Ausdruck einschließt. Und doch, so wird eine Instanz der Klasse erzeugt. Das Objekt, welches hinter gui steckt wird dabei natürlich nicht erzeugt, dass wird es aber auch nicht in deinem zweiten Beispiel.
 
Die Benutzeroberfläche muss nicht Statisch sein. Das Konstrukt sollte wie folgt aufgebaut werden.

1. Erstelle deine Benutzeroberfläche. Diese muss erstmal nichts können, nur gut aussehen.
2. Entwickle die Logik die dein Programm können soll.
3. Rufe eine Instanz deiner Logikklasse in dem GUI auf. Gebe allen Buttons etc. die gewünschte Funktion (Actionlistener ist hier das Stichwort)
4. Der letzte entscheidende Schritt: Erzeuge eine Instanz deines GUI in der main()-Methode, gebe dieser Instanz die nötigen bzw. gewünschten Parameter mit.
5. Sich freuen das es geht || nochmal hier vorbeischauen.

Hier sind drei kleine englische video Tutorials, die dich bei deinem Vorhaben unterstützen können:

https://www.youtube.com/watch?v=jUdIAgJ7JKo GUI mit JFrame erstellen
https://www.youtube.com/watch?v=3EE7E3bvfe8 EventHandling mit einem GUI
https://www.youtube.com/watch?v=qhYook53olE ActionListener Beispiel

So würde ich das Projekt umsetzen.

Viel Spaß damit.
 
Zuletzt bearbeitet:

osion

Bekanntes Mitglied
Dann frage ich mich, ob da nicht etwas mit deiner Struktur bogus ist. Ich würde vermuten, du hast in verschiedenen Objekten referenzen auf dein gui Objekt und du setzt die Referenz einfach nicht bei allen, sondern nur bei einigen. Als resultat kriegst du dann, je nachdem, wo du die Variablen setzt, keine NPE und an anderer Stelle, eine NPE.


Das wird mir nicht klar. Wieso "musst" du das? Ist das jemand anderes Code? Ich denke mal, das ganze wäre einfacher zu beantworten, wenn du mal ein bisschen deines Codes hier reinstellst.

Wo der Fehler auftritt ist mir bewusst, mir ist nur nicht bewusst warum die Klasse erzeugung manchmal in der Methode geschehen muss dass er keine Fehlermeldung bei der Abfrage von Werte gibt.

Der Code ist von mir und es handelt sich um ein Programm, welches ermöglicht grössere Menge Daten zu transferieren. Es ist nicht auf Transfer ausgelegt sonder eher zum Ordnung schaffen.
 
@njans

1. Ist classXY keine Variable, sondern eine Klasse
2. Besagt die Java Namenskonvention dass, das Wort class nicht als Klassennamensbestandteil benutzt werden darf.
Code Conventions for the Java Programming Language: 9. Naming Conventions
3. Bei "gui" ist es nicht ersichtlich ob es sich um ein Object oder eine Variable handelt. Aus der Beschreibung das er das GUI herumreicht ist davon auszugehen, dass es sich hierbei um seine Benutzeroberfläche handelt. Dies ist jedoch nur ein Spekulation.

Im letzten Punkt muss ich dir recht geben, bei der Parameterübergabe wird keine Instanz des Objektes erstellt.

Dies mag vllt. sogar osions Problem sein.

Versuch bitte mal von der Klasse XY(), die einen überladenen Konstruktor besitzt, auf die beschriebene Art eine Instanz zu erzeugen. Lass mich bitte an deinem Erfolg / Misserfolg teilhaben.

classXY=new XY(gui)
 
Zuletzt bearbeitet:
Wo möchtest du die Instanzen denn sonst erstellen, wenn nicht in einer Methode? Der Fehler wurde dir bereits zweimal mitgeteilt. Du übergibst ein leeres Objekt! Wenn du deine Struktur beibehalten möchtest, schau nach wieso das Objekt leer ist.
 
Zuletzt bearbeitet:

njans

Top Contributor
1. Ist classXY keine Variable, sondern eine Klasse
Wenn das so wäre, dann
Java:
classXY=new XY(gui);
würde hinter dem new Operator auch der Name der Klasse stehen. Ich nehme mal nicht an, dass es sich hier um eine polymorphe Beziehung handelt, zumindest kann ich weder Interfaces noch Vererbung im Text des TOs ersehen.

2. Besagt die Java Namenskonvention dass, das Wort class nicht als Klassennamensbestandteil benutzt werden darf.
Code Conventions for the Java Programming Language: 9. Naming Conventions
Da steht auch, dass Klassennamen sprechend sein sollen und XY ist das definitiv nicht. Das ist aber auch gar nicht der Punkt. Ich hatte XY eher als Beispielnamen für eine Deklaration und Initialisierung aufgefasst.

3. Bei "gui" ist es nicht ersichtlich ob es sich um ein Object oder eine Variable handelt. Aus der Beschreibung das er das GUI herumreicht ist davon auszugehen, dass es sich hierbei um seine Benutzeroberfläche handelt. Dies ist jedoch nur ein Spekulation.
Da stimme ich zu.

@osion
Magst du uns mal etwas mehr Code zeigen. So ist es praktisch unmöglich zu ersehen, wie bei dir die Fehler zu korrigieren wären.
 

osion

Bekanntes Mitglied
Vorrausichtlich morgen könnt ihr das ganze Programm sehen:

Ich will noch was verbessern, alle Datenbanken, Vectoren, Listen (ca. 20), welche generell von den meisten Klassen gebraucht von der GUI rausnehmen.

Static würde sich ja sehr gut empfehlen, da ich in einer Klasse alle übergreiffenden Datenbanken einfach als Static laden könnte.

Frage: Gibt es eine Möglichkeit static zu erzeugen, aber das Object zu zerstören später? Vielleicht hat jemand von euch eine gute Idee
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
thobren Object[][] Java Basics - Anfänger-Themen 8
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
I JaxB und Klasse "Object" ? Java Basics - Anfänger-Themen 7
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
B JaxB - speichern vom Typ "Object" Java Basics - Anfänger-Themen 8
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
M Java Klasse Object Java Basics - Anfänger-Themen 5
G Java Object value und entity? Java Basics - Anfänger-Themen 2
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
I Object-Oriented Programming, Objekt erzeugen Java Basics - Anfänger-Themen 1
P Zugreifen auf Object[] Java Basics - Anfänger-Themen 4
B if(object== null) abkürzen? Java Basics - Anfänger-Themen 6
A Object to Map Java Basics - Anfänger-Themen 2
D Object in ArrayList ausgeben Java Basics - Anfänger-Themen 24
L Input/Output Datei Object aus resources Java Basics - Anfänger-Themen 1
T HashSet in List-Object Java Basics - Anfänger-Themen 5
H Datentypen for(typ a : b) nur typ Object möglich ? Java Basics - Anfänger-Themen 2
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
T Object zu Char zu String Java Basics - Anfänger-Themen 6
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
F Methoden Object.clone() Java Basics - Anfänger-Themen 1
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
A JavaScript Object Notation einbinden mittels Maven Java Basics - Anfänger-Themen 7
F Unique Object Java Basics - Anfänger-Themen 3
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
O Object Java Basics - Anfänger-Themen 4
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
K Selbst renderndes Object auf null setzen Java Basics - Anfänger-Themen 1
K Methoden Probleme mit LinkedList.remove(object) Java Basics - Anfänger-Themen 1
J Object bestimmter Klasse Java Basics - Anfänger-Themen 3
F Object mit zwei Entities Java Basics - Anfänger-Themen 3
B Map, basic types & Object Java Basics - Anfänger-Themen 5
P Auf Object in Array Methode anwanden Java Basics - Anfänger-Themen 2
S Object Array Length via Konstruktor Java Basics - Anfänger-Themen 5
B Date Object mit Millisekunden Ausgabe Java Basics - Anfänger-Themen 8
V Object in double? Java Basics - Anfänger-Themen 3
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
N Object mit String ansprechen Java Basics - Anfänger-Themen 7
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
A If object != null funktioniert nicht Java Basics - Anfänger-Themen 2
B func(Object ....args) korrekt weitergeben Java Basics - Anfänger-Themen 4
M Object people[][] Daten hinzufügen Java Basics - Anfänger-Themen 3
T Input/Output Object Streams Java Basics - Anfänger-Themen 6
T Object[][] to String[][] Java Basics - Anfänger-Themen 8
T Object in Array Java Basics - Anfänger-Themen 3
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
H Object an methode Java Basics - Anfänger-Themen 4
D Object -> String Java Basics - Anfänger-Themen 6
W Compiler-Fehler "Could not reserve enough space for object heap"... und dann raucht das Programm ab Java Basics - Anfänger-Themen 3
D Datentyp Object Java Basics - Anfänger-Themen 2
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
L Datentypen Object zu double zu int konvertieren Java Basics - Anfänger-Themen 6
M String to Object Java Basics - Anfänger-Themen 15
S Object Initialisierung Java Basics - Anfänger-Themen 7
H Object in einem .jar-File einlesen Java Basics - Anfänger-Themen 3
D Object oder Primitiv Java Basics - Anfänger-Themen 10
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7
W Main-method in Object-classes Java Basics - Anfänger-Themen 5
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
C JComboBox setSelectedItem(Object) Problem Java Basics - Anfänger-Themen 5
B Methoden object = this; Java Basics - Anfänger-Themen 4
S Object Member<T> Klasse Java Basics - Anfänger-Themen 5
M Methode von einem Object überschreiben Java Basics - Anfänger-Themen 5
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
M Variablen dynamisch variableninhalt von Object auslesen Java Basics - Anfänger-Themen 4
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
R ArrayList(int index, Object) funktioniert nicht korrekt? Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
N HashMap<String, Object> bei jre4 Java Basics - Anfänger-Themen 3
M object cast auf double Java Basics - Anfänger-Themen 2
K Datentypen Object in 2-dimensionales String Array zurückwandeln Java Basics - Anfänger-Themen 14
D Aus Object auslesen Java Basics - Anfänger-Themen 2
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
C mehrdimensionales Object sortieren Java Basics - Anfänger-Themen 4
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
T List.add(Object) führt zu NullPointerException Java Basics - Anfänger-Themen 14
F Wie kann ein Object[] zu Integer[] umwandeln? Java Basics - Anfänger-Themen 6
O Serialisierung: Object abspeichern und aufrufen Java Basics - Anfänger-Themen 6
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
Ollek Collections ArrayList Object - Attribut von dem Object vergleichen Java Basics - Anfänger-Themen 7
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
B Object an Server senden, Server antwortet mit objekt? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben