JavaFX NullpointerEx, kann nichts zur Pane hinzufügen

Kababär

Top Contributor
Hi Leute,

ich habe mir mit dem SceneBuilder etwas zusammengebastelt meine Idee ist, dass ich auf einer Pane, die sich in einer HBox befindet, zeichnen will.
Problem ist, dass ich beim SceneBuilder nichts zur Pane hinzufügen kann (da wollte ich Linien einfügen) und wenn ich innerhalb des Programms versuche, Linien zu erstellen und diese zu der Pane hinzufüge, bekomme ich eine NullPointer geschmissen.
Genauso wenn ich den Text des Labels verändern will.
Das Problem tritt auf, wenn ich "sinePane.getWidth()" aufzurufen denn er meckert es sei Null, doch ich habe es doch über FXML erzeugt, also verstehe ich nicht ganz?
Die anderen Elemente funktionieren doch auch..
Hier mal die Abschnitte:



Java:
public void initView()
    {
      
        try
        {
            pane = FXMLLoader.load(getClass().getResource("ViewFXML.fxml"));
            pane.setPadding(new Insets(10));
          
            Line yLine = new Line(sinePane.getWidth()/2, 0, sinePane.getWidth()/2, sinePane.getHeight());
            yLine.setStroke(Color.BLACK);
            Line xLine = new Line(0, sinePane.getHeight()/2, sinePane.getWidth(), sinePane.getHeight()/2);
            xLine.setStroke(Color.BLACK);
            sinePane.getChildren().addAll(xLine, yLine);

          
          
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Und hier das dazgehörige FXML:

Code:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane fx:id="anchPane" prefHeight="517.0" prefWidth="530.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <!-- TODO Add Nodes -->
  <children>
    <GridPane id="gp" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="156.0" prefWidth="416.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="24.0" AnchorPane.rightAnchor="90.0">
      <children>
        <Label fx:id="freL" text="Frequenz" GridPane.columnIndex="0" GridPane.rowIndex="1" GridPane.valignment="TOP" />
        <Label fx:id="phaL" text="Phasenverschiebung" GridPane.columnIndex="0" GridPane.rowIndex="2" GridPane.valignment="TOP" />
        <Slider fx:id="ampS" max="6.0" min="-6.0" prefHeight="39.0" prefWidth="322.0" showTickLabels="true" showTickMarks="true" GridPane.columnIndex="1" GridPane.rowIndex="0" />
        <Slider fx:id="freS" max="40.0" showTickLabels="true" showTickMarks="true" GridPane.columnIndex="1" GridPane.rowIndex="1" />
        <Slider fx:id="phaS" max="10.0" min="-10.0" showTickLabels="true" showTickMarks="true" GridPane.columnIndex="1" GridPane.rowIndex="2" />
        <Label fx:id="ampL" text="Amplitude" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.valignment="TOP" />
        <Label fx:id="zoomL" text="Zoom" GridPane.columnIndex="0" GridPane.rowIndex="3" GridPane.valignment="TOP" />
        <Slider fx:id="zoomS" max="210.0" pickOnBounds="false" showTickLabels="true" showTickMarks="true" snapToTicks="false" GridPane.columnIndex="1" GridPane.rowIndex="3" />
      </children>
      <columnConstraints>
        <ColumnConstraints hgrow="SOMETIMES" maxWidth="264.0" minWidth="10.0" prefWidth="118.0" />
        <ColumnConstraints hgrow="SOMETIMES" maxWidth="431.0" minWidth="0.0" prefWidth="298.0" />
      </columnConstraints>
      <rowConstraints>
        <RowConstraints maxHeight="87.0" minHeight="10.0" prefHeight="87.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="134.0" minHeight="10.0" prefHeight="84.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="98.0" minHeight="10.0" prefHeight="88.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="98.0" minHeight="10.0" prefHeight="88.0" vgrow="SOMETIMES" />
      </rowConstraints>
    </GridPane>
    <HBox id="HBox" fx:id="formelHBox" alignment="CENTER_LEFT" layoutX="14.0" layoutY="14.0" prefWidth="492.0" spacing="5.0">
      <children>
        <Label id="label" fx:id="formelL" prefHeight="33.0" prefWidth="129.0" text="" />
      </children>
    </HBox>
    <HBox id="HBox" fx:id="drawHBox" alignment="CENTER" layoutX="24.0" layoutY="47.0" spacing="5.0">
      <children>
        <Pane fx:id="sinePane" prefHeight="312.0" prefWidth="492.0" />
      </children>
    </HBox>
  </children>
</AnchorPane>
 

Thallius

Top Contributor
pane = FXMLLoader.load(getClass().getResource("ViewFXML.fxml"));

Du prüfst weder ob es die Resource gibt noch ob sie geladen werden kann. Und da wunderst Du dich ?
 

Kababär

Top Contributor
Geladen wir sie jedoch, da meine View auch dementspechend aussieht (Also Labels und Slider werden angezeigt). Nur wenn ich versuche auf das bisher leere Label ein setText wirken zu lassen, kommt ein Nullpointer.. bzw wenn ich von den Slider mir ein .getValue() holen will..
 

Jardcore

Top Contributor
Hey Kababär,

hast du in deinem Quellcode auch irgendwo folgendes stehen?

Java:
@FXML
private Pane sinePane;

Wenn nicht solltest du nochmal prüfen deine benötigten Variablen alle zu verknüpfen.
 

Kababär

Top Contributor
Ich habe den Fehler gefunden danke, man muss statt
Java:
@FXML
private Pane sinePane;

Wirklich

Java:
Pane sinePane = new Pane();

schreiben und das gleiche für alle anderen Variabeln.
Danke.
 

Kababär

Top Contributor
Habe es eben gemerkt. Ich habe mal versucht per Freihandzeichnen eine Sinus-Kurve zu malen, beim Debuggen stellte ich fest, dass das Programm die sinePane wohl zwar lädt, aber nicht darstellt oder ähnliches, da
e->method(e.getX(), e.getY())
niemals passiert, heißt schlichtweg meine sinePane ist wohl irgendwie nicht da.
 

Jardcore

Top Contributor
Glaube du hast vergessen deiner AnchorPane deinen Controller zu übergeben fx:controller="xxx" bzw. Controller setzten nachdem du die FXML geladen hast.
 

Kababär

Top Contributor
Ok den Controller habe ich nun gesetzt und bei der Pane jeweils onMouseDragged und onMousePressed hinzugefügt, dann wird im Controller entschieden, welche von beiden Events auftritt in der Methode handle.
Doch allerdings komme ich beim Debuggen nicht rein, die Pane scheint immer noch unsichtbar zu sein.

edit: Gelöst, problem war meine if-Abfrage um welches Event es sich handelt.
Code:
        if(e.getEventType().toString().equals("MOUSE_DRAGGED"))
        {
            mouseDragged(e.getX(), e.getY());
        }
das toString() darf man nicht vergessen.

Danke euch :)

edit2: kleine Frage, will nicht extra einen Thread dafür aufmachen.
Wenn ich in FXML eine ComboBox erstelle und sie dort schon fülle
fx:factory="observableArrayList"
kann ich diese irgendwie in meinen Controller laden?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
K JavaFX TableViewer zeigt nichts an !! AWT, Swing, JavaFX & SWT 1
A Swing Vokabeltrainer zeigt in einfacher Ausführung nichts an AWT, Swing, JavaFX & SWT 5
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
X Runnable .Jar tut nichts AWT, Swing, JavaFX & SWT 3
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
V Swing Bei repaint() tut sich nichts AWT, Swing, JavaFX & SWT 7
N Swing Es wird nichts angezeigt AWT, Swing, JavaFX & SWT 5
hdi Swing mal wieder EDT -> nichts passiert AWT, Swing, JavaFX & SWT 20
S JFrame, beim ausführen passiert nichts AWT, Swing, JavaFX & SWT 3
H Noch einmal JList (nichts auswählen) AWT, Swing, JavaFX & SWT 2
G KeyListener Problem in GUI (macht einfach nichts) AWT, Swing, JavaFX & SWT 2
L Layout für Formulare - Nichts für sensible Gemüter AWT, Swing, JavaFX & SWT 3
M Methode zum Nichts tun? AWT, Swing, JavaFX & SWT 3
C In JDialog wird nichts angezeigt AWT, Swing, JavaFX & SWT 4
M Kann in JTextField nichts reinschreiben AWT, Swing, JavaFX & SWT 3
P JScrollPane stellt nichts dar. AWT, Swing, JavaFX & SWT 2
G Die ganze Pane width nutzen AWT, Swing, JavaFX & SWT 1
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
K TabPane Pane Styling mit CSS AWT, Swing, JavaFX & SWT 3
M PDF einlesen und innerhalb Pane anzeigen AWT, Swing, JavaFX & SWT 5
WetWer Scroll Pane AWT, Swing, JavaFX & SWT 2
S JavaFX Pane Wechsel AWT, Swing, JavaFX & SWT 1
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
M Java FX Welches Accordion Tilded Pane geöffnet? AWT, Swing, JavaFX & SWT 4
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
G JavaFX Pane ändern/"austauschen" AWT, Swing, JavaFX & SWT 2
Kenan89 Vertikal und horizontal zentrierter Pane in ScrollPane AWT, Swing, JavaFX & SWT 5
M Auf Glass Pane zeichnen AWT, Swing, JavaFX & SWT 3
L JFrame/Content Pane height Problem AWT, Swing, JavaFX & SWT 4
Y Swing Bordered Pane und Jpanel AWT, Swing, JavaFX & SWT 11
G inahlt von content pane austauschen AWT, Swing, JavaFX & SWT 2
A Probleme mit JOption Pane mit FokusListener und Schaltfläche AWT, Swing, JavaFX & SWT 5
T Tabbed Pane AWT, Swing, JavaFX & SWT 3
F An eindeutigen Index eines Tabs in einer JTabbed Pane kommen AWT, Swing, JavaFX & SWT 3
A Tabbed Pane ohne Tabs? - möglich? AWT, Swing, JavaFX & SWT 4
G eigenes option pane AWT, Swing, JavaFX & SWT 5
F Maximieren, Minimieren, Schließen Button in JTabbed Pane AWT, Swing, JavaFX & SWT 2
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
A Datei einlesen und Inhalt in JList (Tabbed Pane) anzeigen? AWT, Swing, JavaFX & SWT 11
P Scrollbar/Pane auch mit negativen x,y - Werten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben