Hallo. Ich habe einen Laufzeitfehler in meinem Programm, und weiß nicht warum. Ich habe schon andere Threads mit den gleichen Fehlern gesehen, konnte aber nicht herausfinden, was ich falsch gemacht habe.
Bitte helft mir den Fehler zu finden!
danke, alife
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Muehle.mouseClicked(Muehle.java:136)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Muehle extends JFrame implements ActionListener, MouseListener{
// Anfang Variablen
/* Allgemein, Grafiken
***********************/
myPanel jp = new myPanel();
public static Image img_brett = Toolkit.getDefaultToolkit().getImage("brett_1.png");
public static Image img_icon = Toolkit.getDefaultToolkit().getImage("icon.png");
public static Image img_sw = Toolkit.getDefaultToolkit().getImage("stein_schwarz.png");
public static Image img_ws = Toolkit.getDefaultToolkit().getImage("stein_weiss.png");
public static Image img_marked = Toolkit.getDefaultToolkit().getImage("marked.png");
/* Variablen zur Logik
***********************/
public static Spielbrett spielbrett = new Spielbrett();
public static Position [][] pos = {
{new Position(15 ,15 ), new Position(220,15 ), new Position(425,15 ), new Position(425,220), new Position(425,425), new Position(220,425), new Position(15 ,425), new Position(15 ,220)},
{new Position(75 ,75 ), new Position(220,75 ), new Position(365,75 ), new Position(365,220), new Position(365,365), new Position(220,365), new Position(75 ,365), new Position(75 ,220)},
{new Position(135,135), new Position(220,135), new Position(305,135), new Position(305,220), new Position(305,305), new Position(220,305), new Position(135,305), new Position(135,220)}
};
/* Menü
****************/
public JMenuBar menuBar = new JMenuBar();
public JMenu datei = new JMenu("Datei");
public JMenu options = new JMenu("Optionen");
public JMenuItem miNewConnect = new JMenuItem("Neu Verbinden");
public JMenuItem miClose = new JMenuItem("Beenden");
public JMenuItem miNewStart = new JMenuItem("Neu beginnen");
// Ende Variablen
public Muehle(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); } });
this.setIconImage(img_icon);
setResizable(false);
int frameWidth = 507;
int frameHeight = 546;
setSize(frameWidth, frameHeight);
setLocationRelativeTo(null);
Container cp = getContentPane();
cp.setLayout(null);
addMouseListener(this);
// Anfang Komponenten
/* Allgemeines
****************/
cp.add(jp);
jp.setLayout(null);
jp.setBounds(0,0,500,500);
/* Menü
****************/
setJMenuBar(menuBar);
//Positionieren der Elemente:
menuBar.add(datei);
menuBar.add(options);
datei.add(miNewConnect);
datei.addSeparator();
datei.add(miClose);
datei.setMnemonic('D');
options.add(miNewStart);
// Eigenschaften einstellen
miNewConnect.setAccelerator(KeyStroke.getKeyStroke('C',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
miNewConnect.setMnemonic('N');
miClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,KeyEvent.ALT_MASK));
miClose.setMnemonic('B');
options.setMnemonic('O');
miNewStart.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
miNewStart.setMnemonic('N');
// Aktionen zuweisen:
miNewConnect.addActionListener(this);
miClose.addActionListener(this);
miNewStart.addActionListener(this);
// Ende Komponenten
setVisible(true);
}
// Anfang Ereignisprozeduren
public void actionPerformed (ActionEvent e) {
if(e.getActionCommand().equals("Beenden")){
dispose();
}
System.out.println("Menüauswahl --> "
+ ((JMenuItem)e.getSource()).getActionCommand());
}
public void mouseClicked (MouseEvent e){
Spielstein [][] temp= Muehle.spielbrett.getSpielsteine();
for(int i=0; i<2; ++i){
for(int j=0; j<9; ++i){
int ring = temp[i][j].getRing(); //DAS HIER IST DIE ZEILE "136", IN DER DER FEHLER AUFTRITT!!
int platz = temp[i][j].getPlatz();
if(((int)e.getX() > (int)pos[ring][platz].getX()) && ((int)e.getX() < (int)pos[ring][platz].getX()+80) && ((int)e.getY() > (int)pos[ring][platz].getY()) && ((int)e.getY() < (int)pos[ring][platz].getY()+80)){
System.out.println("Bla: Test fuer Spielbrett" );
}
}
}
//lbl_test.setText(" " + e.getX() + "|" + e.getY());
}
public void mouseEntered (MouseEvent e){}
public void mouseExited (MouseEvent e){}
public void mousePressed (MouseEvent e){}
public void mouseReleased(MouseEvent e){}
// Ende Ereignisprozeduren
public static void main(String[] args) {
new Muehle("Mühle");
}
}
class Position extends Point{
private boolean markiert;
public Position(int x, int y){
super();
}
public boolean getMarkiert (){
return this.markiert;
}
public void setMarkiert (boolean markiert){
this.markiert = markiert;
}
}
class myPanel extends JPanel{
public void paint( Graphics g ) {
g.drawImage (Muehle.img_brett, 0,0, 500, 500,this); //Spielbrett laden
}
}
class Spielbrett{
private Spielstein [][] spielsteine;
public Spielbrett (){
Spielstein [][] spielsteine = new Spielstein [2][9];
}
public Spielstein[][] getSpielsteine(){
return this.spielsteine;
}
}
class Spielstein{
private byte ring; // siehe oben
private byte platz; // ----"-----
private boolean farbe; // 0 = weiß, 1 = schwarz
private boolean gesetzt;
public Spielstein(){
this.ring = 0;
this.platz = 0;
}
public Spielstein(byte ring, byte platz, boolean farbe){
this.ring = ring;
this.platz = platz;
this.farbe = farbe;
this.gesetzt = false;
}
public void setRing (byte ring){
this.ring = ring;
}
public void setPlatz (byte platz){
this.platz = platz;
}
public void setFarbe (boolean farbe){
this.farbe = farbe;
}
public void setGesetzt (boolean gesetzt){
this.gesetzt = gesetzt;
}
public byte getRing (){
return this.ring;
}
public byte getPlatz (){
return this.platz;
}
public boolean getFarbe (){
return this.farbe;
}
public boolean getGesetzt (){
return this.gesetzt;
}
}
Bitte helft mir den Fehler zu finden!
danke, alife