Moin,
lerne zurzeit Java und bin noch nicht sehr tief in der Materie. Für meine Hausarbeit soll ich zurzeit ein Labyrinth programmieren. Ein Teil davon ist ein Dialog Fenster mit Einstellungsmöglichkeiten. Dies soll in etwa so aussehen:
(https://www.bilder-upload.eu/bild-2ceaf1-1549972388.png.html)
Ich habe von Eclipse den WindowBuilder benutzt und komme leider auf viele NullPointerExeptions habe dessen Grund aber nicht herausfinden können.
Die Fehlermeldungen die kommen sind diese:
Beim Ersten Punkt mit Gui.Dialog.stateChanged(Dialog.java:251) bin ich im code bei der If abfrage zu den sich ändernden slidern. Mir fällt schon dort nicht ein was da die Exeption auslöst.
Sry, das das recht viel verlangt ist von euch aber ich bin echt am verzweifeln...
lerne zurzeit Java und bin noch nicht sehr tief in der Materie. Für meine Hausarbeit soll ich zurzeit ein Labyrinth programmieren. Ein Teil davon ist ein Dialog Fenster mit Einstellungsmöglichkeiten. Dies soll in etwa so aussehen:
(https://www.bilder-upload.eu/bild-2ceaf1-1549972388.png.html)
Ich habe von Eclipse den WindowBuilder benutzt und komme leider auf viele NullPointerExeptions habe dessen Grund aber nicht herausfinden können.
Java:
/*
* created 05.02.2019
*/
package Gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
* @author ******
*
*/
public class Dialog extends JFrame implements ActionListener, ChangeListener {
private JFrame frmRoboterImLabyrinth;
private JTextField textBreite;
private JTextField textHoehe;
private JTextField textWandwa;
private JTextField textAnima;
private JLabel LabelBreite;
private JLabel LabelHoehe;
private JLabel LabelWandwa;
private JLabel LabelAnima;
private JSlider sliderBreite;
private JSlider sliderHoehe;
private JSlider sliderWandwa;
private JSlider sliderAnima;
private JButton btnStart;
private JButton btnAbbruch;
private static int breite;
private static int hoehe;
private static int wandwa;
private static int anima;
public static int getBreite() {
return breite;
}
public static int getHoehe() {
return hoehe;
}
public static int getWandwa() {
return wandwa;
}
public static int getAnima() {
return anima;
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
Dialog window = new Dialog();
window.frmRoboterImLabyrinth.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Dialog() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmRoboterImLabyrinth = new JFrame();
frmRoboterImLabyrinth.setTitle("Roboter im Labyrinth");
frmRoboterImLabyrinth.setBounds(100, 100, 744, 279);
frmRoboterImLabyrinth.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[] {0, 0, 0, 0};
gridBagLayout.rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
gridBagLayout.columnWeights = new double[] {1.0, 1.0, 1.0,
Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
Double.MIN_VALUE};
frmRoboterImLabyrinth.getContentPane().setLayout(gridBagLayout);
LabelBreite = new JLabel("Breite des Labyrinthes:");
GridBagConstraints gbc_LabelBreite = new GridBagConstraints();
gbc_LabelBreite.insets = new Insets(0, 0, 5, 5);
gbc_LabelBreite.gridx = 0;
gbc_LabelBreite.gridy = 1;
frmRoboterImLabyrinth.getContentPane().add(LabelBreite, gbc_LabelBreite);
sliderBreite = new JSlider();
sliderBreite.addChangeListener(this);
sliderBreite.setPaintTicks(true);
sliderBreite.setMajorTickSpacing(100);
sliderBreite.setMaximum(1000);
sliderBreite.setMinimum(100);
GridBagConstraints gbc_sliderBreite = new GridBagConstraints();
gbc_sliderBreite.insets = new Insets(0, 0, 5, 5);
gbc_sliderBreite.gridx = 1;
gbc_sliderBreite.gridy = 1;
frmRoboterImLabyrinth.getContentPane().add(sliderBreite, gbc_sliderBreite);
textBreite = new JTextField();
textBreite.addActionListener(this);
GridBagConstraints gbc_textBreite = new GridBagConstraints();
gbc_textBreite.fill = GridBagConstraints.HORIZONTAL;
gbc_textBreite.insets = new Insets(0, 0, 5, 5);
gbc_textBreite.gridx = 2;
gbc_textBreite.gridy = 1;
frmRoboterImLabyrinth.getContentPane().add(textBreite, gbc_textBreite);
textBreite.setColumns(10);
LabelHoehe = new JLabel("H\u00F6he des Labyrinthes:");
GridBagConstraints gbc_LabelHoehe = new GridBagConstraints();
gbc_LabelHoehe.insets = new Insets(0, 0, 5, 5);
gbc_LabelHoehe.gridx = 0;
gbc_LabelHoehe.gridy = 2;
frmRoboterImLabyrinth.getContentPane().add(LabelHoehe,
gbc_LabelHoehe);
sliderHoehe = new JSlider();
sliderHoehe.addChangeListener(this);
sliderHoehe.setPaintTicks(true);
sliderHoehe.setMajorTickSpacing(100);
sliderHoehe.setMinimum(100);
sliderHoehe.setMaximum(800);
GridBagConstraints gbc_sliderHoehe = new GridBagConstraints();
gbc_sliderHoehe.insets = new Insets(0, 0, 5, 5);
gbc_sliderHoehe.gridx = 1;
gbc_sliderHoehe.gridy = 2;
frmRoboterImLabyrinth.getContentPane().add(sliderHoehe, gbc_sliderHoehe);
textHoehe = new JTextField();
textHoehe.addActionListener(this);
GridBagConstraints gbc_textHoehe = new GridBagConstraints();
gbc_textHoehe.insets = new Insets(0, 0, 5, 5);
gbc_textHoehe.fill = GridBagConstraints.HORIZONTAL;
gbc_textHoehe.gridx = 2;
gbc_textHoehe.gridy = 2;
frmRoboterImLabyrinth.getContentPane().add(textHoehe, gbc_textHoehe);
textHoehe.setColumns(10);
LabelWandwa = new JLabel("Wandwahrscheinlichkeit:");
GridBagConstraints gbc_LabelWandwa = new GridBagConstraints();
gbc_LabelWandwa.insets = new Insets(0, 0, 5, 5);
gbc_LabelWandwa.gridx = 0;
gbc_LabelWandwa.gridy = 3;
frmRoboterImLabyrinth.getContentPane().add(LabelWandwa,
gbc_LabelWandwa);
sliderWandwa = new JSlider();
sliderWandwa.addChangeListener(this);
sliderWandwa.setPaintTicks(true);
sliderWandwa.setMajorTickSpacing(10);
GridBagConstraints gbc_sliderWandwa = new GridBagConstraints();
gbc_sliderWandwa.insets = new Insets(0, 0, 5, 5);
gbc_sliderWandwa.gridx = 1;
gbc_sliderWandwa.gridy = 3;
frmRoboterImLabyrinth.getContentPane().add(sliderWandwa, gbc_sliderWandwa);
textWandwa = new JTextField();
textWandwa.addActionListener(this);
GridBagConstraints gbc_textWandwa = new GridBagConstraints();
gbc_textWandwa.insets = new Insets(0, 0, 5, 5);
gbc_textWandwa.fill = GridBagConstraints.HORIZONTAL;
gbc_textWandwa.gridx = 2;
gbc_textWandwa.gridy = 3;
frmRoboterImLabyrinth.getContentPane().add(textWandwa, gbc_textWandwa);
textWandwa.setColumns(10);
LabelAnima = new JLabel(
"Animationsverz\u00F6gerung in Millisekunden:");
GridBagConstraints gbc_LabelAnima = new GridBagConstraints();
gbc_LabelAnima.insets = new Insets(0, 0, 5, 5);
gbc_LabelAnima.gridx = 0;
gbc_LabelAnima.gridy = 4;
frmRoboterImLabyrinth.getContentPane().add(
LabelAnima,
gbc_LabelAnima);
sliderAnima = new JSlider();
sliderAnima.addChangeListener(this);
sliderAnima.setPaintTicks(true);
sliderAnima.setMajorTickSpacing(200);
sliderAnima.setMinimum(100);
sliderAnima.setMaximum(3000);
GridBagConstraints gbc_sliderAnima = new GridBagConstraints();
gbc_sliderAnima.insets = new Insets(0, 0, 5, 5);
gbc_sliderAnima.gridx = 1;
gbc_sliderAnima.gridy = 4;
frmRoboterImLabyrinth.getContentPane().add(sliderAnima, gbc_sliderAnima);
textAnima = new JTextField();
textAnima.addActionListener(this);
GridBagConstraints gbc_textAnima = new GridBagConstraints();
gbc_textAnima.insets = new Insets(0, 0, 5, 5);
gbc_textAnima.fill = GridBagConstraints.HORIZONTAL;
gbc_textAnima.gridx = 2;
gbc_textAnima.gridy = 4;
frmRoboterImLabyrinth.getContentPane().add(textAnima, gbc_textAnima);
textAnima.setColumns(10);
btnStart = new JButton("Start");
btnStart.addActionListener(this);
GridBagConstraints gbc_btnStart = new GridBagConstraints();
gbc_btnStart.fill = GridBagConstraints.HORIZONTAL;
gbc_btnStart.insets = new Insets(0, 0, 0, 5);
gbc_btnStart.gridx = 0;
gbc_btnStart.gridy = 6;
frmRoboterImLabyrinth.getContentPane().add(btnStart, gbc_btnStart);
btnAbbruch = new JButton("Abbruch");
btnAbbruch.addActionListener(this);
GridBagConstraints gbc_btnAbbruch = new GridBagConstraints();
gbc_btnAbbruch.fill = GridBagConstraints.HORIZONTAL;
gbc_btnAbbruch.insets = new Insets(0, 0, 0, 5);
gbc_btnAbbruch.gridx = 1;
gbc_btnAbbruch.gridy = 6;
frmRoboterImLabyrinth.getContentPane().add(btnAbbruch, gbc_btnAbbruch);
}
/*
* (non-Javadoc) Wenn kein eigener Javadoc-Kommentar angegeben wird, verwendet
* Javadoc den Kommentar aus der Oberklasse. Soll ein modifizierter
* Javadoc-Kommentar für die überschreibende Methode angegeben werden, so kann
* der Kommentar der Oberklasse mit {@inheritDoc} referenziert werden.
*/
@Override
public void stateChanged(ChangeEvent e) {
if (sliderBreite.getValueIsAdjusting()) {
breite = sliderBreite.getValue();
textBreite.setText(String.valueOf(breite));
}
if (sliderHoehe.getValueIsAdjusting()) {
hoehe = sliderHoehe.getValue();
textHoehe.setText(String.valueOf(hoehe));
}
if (sliderWandwa.getValueIsAdjusting()) {
wandwa = sliderWandwa.getValue();
textWandwa.setText(String.valueOf(wandwa));
}
if (sliderAnima.getValueIsAdjusting()) {
anima = sliderAnima.getValue();
textAnima.setText(String.valueOf(anima));
}
}
/*
* (non-Javadoc) Wenn kein eigener Javadoc-Kommentar angegeben wird, verwendet
* Javadoc den Kommentar aus der Oberklasse. Soll ein modifizierter
* Javadoc-Kommentar für die überschreibende Methode angegeben werden, so kann
* der Kommentar der Oberklasse mit {@inheritDoc} referenziert werden.
*/
@Override
public void actionPerformed(ActionEvent e) {
if (textBreite.getVerifyInputWhenFocusTarget()) {
breite = Integer.parseInt(textBreite.getText());
if (breite > sliderBreite.getMaximum())
breite = sliderBreite.getMaximum();
if (breite < sliderBreite.getMinimum())
breite = sliderBreite.getMinimum();
sliderBreite.setValue(breite);
}
if (textHoehe.getVerifyInputWhenFocusTarget()) {
hoehe = Integer.parseInt(textHoehe.getText());
if (hoehe > sliderHoehe.getMaximum())
hoehe = sliderHoehe.getMaximum();
if (hoehe < sliderHoehe.getMinimum())
hoehe = sliderHoehe.getMinimum();
sliderHoehe.setValue(hoehe);
}
if (textWandwa.getVerifyInputWhenFocusTarget()) {
wandwa = Integer.parseInt(textWandwa.getText());
if (wandwa > sliderWandwa.getMaximum())
wandwa = sliderWandwa.getMaximum();
if (wandwa < sliderWandwa.getMinimum())
wandwa = sliderWandwa.getMinimum();
sliderWandwa.setValue(wandwa);
}
if (textAnima.getVerifyInputWhenFocusTarget()) {
anima = Integer.parseInt(textAnima.getText());
if (anima > sliderAnima.getMaximum())
anima = sliderAnima.getMaximum();
if (anima < sliderAnima.getMinimum())
anima = sliderAnima.getMinimum();
sliderAnima.setValue(anima);
}
if (e.getSource() == btnStart) {
new Labyrinth();
}
if (e.getSource() == btnAbbruch) {
System.exit(0);
}
}
}
Die Fehlermeldungen die kommen sind diese:
Code:
java.lang.NullPointerException
at Gui.Dialog.stateChanged(Dialog.java:251)
at javax.swing.JSlider.fireStateChanged(JSlider.java:432)
at javax.swing.JSlider$ModelListener.stateChanged(JSlider.java:350)
at javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:364)
at javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:302)
at javax.swing.DefaultBoundedRangeModel.setMaximum(DefaultBoundedRangeModel.java:219)
at javax.swing.JSlider.setMaximum(JSlider.java:619)
at Gui.Dialog.initialize(Dialog.java:104)
at Gui.Dialog.<init>(Dialog.java:72)
at Gui.Dialog$1.run(Dialog.java:59)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Beim Ersten Punkt mit Gui.Dialog.stateChanged(Dialog.java:251) bin ich im code bei der If abfrage zu den sich ändernden slidern. Mir fällt schon dort nicht ein was da die Exeption auslöst.
Sry, das das recht viel verlangt ist von euch aber ich bin echt am verzweifeln...