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.
{
/**
* 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));
`
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
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();