Fehlender new Operator? oder hab ich einen Denkfehler

Hi zusammen,

ich hab mal versucht das Programm in Eclipse zu übersetzen und kriege beim Laufen NullpointerExceptions in allen Views (weil es m.E. ja die Objekte nach Deklarierung ja noch nicht gibt oder anders gesagt, weil in den Views die Felder (dynamische Variablen) nicht instantiiert sind. Macht da zB intelliJ einen Unterschied und braucht keine "new"s, fehlt mir eine Bibliothek oder hab ich einen Schalter falsch gesetzt bei der JVM…?

Ich hätte bei Instantiierung gedacht, dass solch eine Zeile dann zB im Konstruktor drin sein muss für die dynamische Erzeugung der Speicherbereichs für zB textSelector bei ExpandView:
textSelector= new textSelector(); …

Das komische ist aber dass es als vorcompiliertes JAR aus dem Web läuft.
Ich hab bei mir das gleich Ausnahmeverhalten egal ob in eclipse laufend oder als ein jar.

VG und Danke für eure Antworten!
Dani

hier der Link zu den Quellen:
https://github.com/AaronHuemmecke/Sorting-Algorithm-Visualizer

`public class ExplanationWindow extends JFrame

{
/**
* JComboBox for selecting a text
/
private JComboBox textSelector; // hier wird deklariert

/
*
* Constructor of the ExplanationWindow
*/
public ExplanationWindow()
{
// current number of descriptionary texts: 8
textSelector.addItem(getTopic(0,0)); // ab hier wird zugegriffen auf das m.E. noch nicht instantiierte Objekt!!
textSelector.addItem(getTopic(1,0));
textSelector.addItem(getTopic(2,0));
textSelector.addItem(getTopic(3,0));
textSelector.addItem(getTopic(4,0));
textSelector.addItem(getTopic(5,0));
textSelector.addItem(getTopic(6,0));
textSelector.addItem(getTopic(7,0));
textSelector.addItem(getTopic(8,0));
textSelector.addItem(getTopic(9,0));
textSelector.addItem(getTopic(10,0));
`

Die Klassen hier sind im jar noch mehr drin als im Repository (src).

Ist auch JavaFX installiert ? Immerhin wird dieses in …/src/main/Java/Views/VisualiserPanel.java inkludiert und verwendet.

Ja die Sourcen von JavaFX hab ich mit eingebunden und eigentlich nur Fehler in der Laufzeit - nicht beim Compilern…

Die Fehler kommen nur aus den …Window.java Dateien, die auch keinen Bezug zum javaFX haben, zB hier drin:

Das hier wäre eine Erklärung aber dann fehlt immer noch die (gleich heißende) Wrapperklasse für zB JButton - dann konnte man im add auch das Erzeugen dann mit erledigen…

Also mal wieder eine Rückmeldung zu meinem Thema:
Hab jetzt unter Ubuntu Linux die IDE IntelliJ IDEA EDU installiert und siehe da, die Quellen laufen da ohne Macken und ohne Exceptions. Warum weiß ich noch nicht genau, das muss ich noch mal über debuggen rauskriegen: Ab welcher Zeile zB man die Variablen im debugger sieht…

Bin aber auch recht begeistert von der IDE (ähnlich wie ANdroidStudio). Da wird alles ziemlich einfach mit. Auch der git / github Anschluss war da ein Kinderspiel und bei eclipse war ich bisher noch nicht erfolgreich damit…

Viel Spaß euch allen hier und ein fröhliches 2022 miteinander!
wünscht Dani

anbei der Link zu meinem fork: https://github.com/oldy-22/idea-sorting/tree/master

So jetzt bin ich dahinter gekommen: In der IDE gibt es einen GUI Designer der seine Definitionen in *.form Dateien hat. Er übersetzt (in File-Settings-Editor-GUIDesigner) seine Quellen beim Build entweder in class Dateien oder in java Quelltext. Hab da nun mal umgeschaltet auf java Quelltext um was zu sehen und dann erscheint hinten im ExplanationWindow eine neue Section vom Quelltext siehe unten. Wenn man den nun in exlipse kopiert wird es damit keine NullpointerExceptions mehr geben, weil die Objekte hier erzeugt werden…
Datei ist auch von 74kB auf 78kB gewachsen.

{
// GUI initializer generated by IntelliJ IDEA GUI Designer
// >>> IMPORTANT!! <<<
// DO NOT EDIT OR ADD ANY CODE HERE!
$$$setupUI$$$();
}

/**
 * Method generated by IntelliJ IDEA GUI Designer
 * >>> IMPORTANT!! <<<
 * DO NOT edit this method OR call it in your code!
 *
 * @noinspection ALL
 */
private void $$$setupUI$$$() {
    mainPanel = new JPanel();
    mainPanel.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1));
    textSelector = new JComboBox();
    mainPanel.add(textSelector, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 2, com.intellij.uiDesigner.core.GridConstraints.ANCHOR_WEST, com.intellij.uiDesigner.core.GridConstraints.FILL_HORIZONTAL, com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_CAN_GROW, com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
    descriptionPanel = new JScrollPane();
    mainPanel.add(descriptionPanel, new com.intellij.uiDesigner.core.GridConstraints(1, 0, 1, 1, com.intellij.uiDesigner.core.GridConstraints.ANCHOR_CENTER, com.intellij.uiDesigner.core.GridConstraints.FILL_BOTH, com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_CAN_SHRINK | com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_WANT_GROW, com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_CAN_SHRINK | com.intellij.uiDesigner.core.GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
    description = new JEditorPane();
    descriptionPanel.setViewportView(description);
    licensePanel = new JPanel();

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.