Hallo Leute,
ich wollte heute ein Programm erweitern, so dass dieses über ein Panel wechsel verschiedene Inhalte anzeigt oder auch nicht mehr anzeigt. Das funktioniert soweit auch.
Aber wenn das entsprechende Panel die Inhalte anzeigt, können diese nicht mehr benutzt werden. Hier wird die Exception geworfen, obwohl das Programm vorher einwandfrei funktioniert hat.
Ich habe den Code auch bereits einige Male verändert um die Exception zu verhindern. Dies hat jedoch nicht geklappt.
Ich habe insgesamt zwei Klassen.
Ich habe es auch mit der zweiten innerhalb der ersten Klasse versucht. Dies hat nicht geholfen.
Aktuell sieht es wieder so aus, wie es vorher war...
Hat hier jemand einen Tipp, wie ich den Code umstellen muss?
Code:
Exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MeinPaint$Drawing.Blau(MeinPaint.java:298)
at MeinPaint$4.actionPerformed(MeinPaint.java:125)
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.DefaultButtonModel.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)
Hat hier jemand einen Tipp? Wie gesagt, einige Varianten habe ich bereits versucht. Das schlug jedoch fehl :-(
ich wollte heute ein Programm erweitern, so dass dieses über ein Panel wechsel verschiedene Inhalte anzeigt oder auch nicht mehr anzeigt. Das funktioniert soweit auch.
Aber wenn das entsprechende Panel die Inhalte anzeigt, können diese nicht mehr benutzt werden. Hier wird die Exception geworfen, obwohl das Programm vorher einwandfrei funktioniert hat.
Ich habe den Code auch bereits einige Male verändert um die Exception zu verhindern. Dies hat jedoch nicht geklappt.
Ich habe insgesamt zwei Klassen.
Ich habe es auch mit der zweiten innerhalb der ersten Klasse versucht. Dies hat nicht geholfen.
Aktuell sieht es wieder so aus, wie es vorher war...
Hat hier jemand einen Tipp, wie ich den Code umstellen muss?
Code:
Java:
public class MeinPaint extends JFrame
{
private static final long serialVersionUID = 1L;
JFrame frame;
JPanel hauptpanel,zeichenPanel,anzeigePanel;
public MeinPaint() {
frame=new JFrame("Mein Paint Programm");
frame.setSize(1000, 700);
frame.setLocationRelativeTo(null);
frame.setLayout(new BorderLayout());
//Hierdrauf wird alles hinzugefügt
Container c=frame.getContentPane();
JButton malen,zeichnungenAnzeigen;
malen=new JButton("Malen");zeichnungenAnzeigen=new JButton("Zeichnungen anzeigen");
//Hierdrauf wird gezeichnet
zeichenPanel=new JPanel();
zeichenPanel.setVisible(false);
//Hier wird das Auswahlpanel angelegt
hauptpanel=new JPanel();
hauptpanel.setVisible(true);
hauptpanel.setLayout(new GridLayout(2, 1));
//Das Anzeigepanel für die existierenden Zeichnungen wird erstellt
anzeigePanel=new JPanel();
anzeigePanel.setVisible(false);
//Auch das Anzeigepanel ist zunächst nicht sichtbar
c.add(anzeigePanel);
anzeigePanel.setVisible(false);
//Nur das Hauptpanel ist zuerst sichtbar
c.add(hauptpanel);
hauptpanel.setVisible(true);
//Hinzufügen der Drawklasse
final Drawing draw=new Drawing();
draw.setSize(880, 700);
zeichenPanel.add(draw,BorderLayout.CENTER);
//Die Buttons werden angelegt
hauptpanel.add(malen);//=new JButton("Malen"));
malen.setPreferredSize(new Dimension(80, 60));
malen.setSize(80, 60);
hauptpanel.add(zeichnungenAnzeigen);//=new JButton("Zeichnungen anzeigen"));
zeichnungenAnzeigen.setPreferredSize(new Dimension(80,60));
zeichnungenAnzeigen.setSize(80, 60);
//Das Panel wird angelegt
zeichenPanel=new JPanel();
zeichenPanel.setVisible(false);
zeichenPanel.setSize(120, 700);
zeichenPanel.setMinimumSize(new Dimension(75, 55));
zeichenPanel.setMaximumSize(new Dimension(85, 65));
zeichenPanel.setLayout(new GridLayout(11, 1));
c.add(zeichenPanel,BorderLayout.WEST);
//Bei diesem Button wird die Exception geworfen -> bei draw.Blau();
JButton blau=new JButton("blau");
blau.setPreferredSize(new Dimension(80, 60));
blau.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
draw.Blau();
}
});
//Beispielhaft gezeigt, dass der Button hinzugefügt wurde. ebenso wie bei den anderen //Buttons.
zeichenPanel.add(blau);
//In der Klasse Drawing, welche sich nicht innerhalb der oben angegebenen befindet...
class Drawing extends JComponent
{
Graphics2D g2d;
public void paintComponent(Graphics g)
{
if(img==null)
{
img=createImage(getSize().width,getSize().height);
g2d=(Graphics2D) img.getGraphics();
clear();
}
g.drawImage(img, 0, 0, null);
}
//Hier ist natürlich noch mehr Code vorhanden, dient aber nur anderen Komponenten.
public void Blau()
{
g2d.setPaint(Color.BLUE); //Hier wird die Exception geworfen.
repaint();
}
}
Exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MeinPaint$Drawing.Blau(MeinPaint.java:298)
at MeinPaint$4.actionPerformed(MeinPaint.java:125)
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.DefaultButtonModel.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)
Hat hier jemand einen Tipp? Wie gesagt, einige Varianten habe ich bereits versucht. Das schlug jedoch fehl :-(
Zuletzt bearbeitet von einem Moderator: