import java.util.*; import javax.swing.*; import java.awt.Color; import java.awt.event.*; import java.awt.Dimension; import java.awt.GridLayout; import java.util.*; /** * Write a description of class Gui here. * * author (Mark Schulze Spüntrup) * version (22.03.08) */ public class Gui extends JFrame implements ActionListener { private Schiffeversenken spiel; private JMenuBar menueleiste; private JMenuItem starten,zuruecksetzen,bedienung,version,ende; private JMenu dateimenue,hilfemenue; private Color farbe1,farbe2,farbe3; private ArrayList buttonliste; private JPanel panel; public Gui() { super("Schiffeversenken"); spiel = new Schiffeversenken(); panel = new JPanel(); buttonliste = new ArrayList(); farbenFestlegen(); menueZeileErzeugen(); spielfeldOberflaeche(); fensterEinstellungen(); buttonsVorbereiten(); show(); } public void farbenFestlegen() { farbe1 = new Color(255,0,0); farbe2 = new Color(160,220,240); farbe3 = new Color(184,184,184); } public void fensterEinstellungen() { setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setSize(400,400); } // ZUR ERKLÄRUNG VORAB: Die SCHLEIFE BEGINNT MIT 100 weil ich i unten noch zum zuweisen des Action Commands Nutze... Da aber bereits 1-7 vergeben sind wollte ich für die 100 felder buttons bei der nächsten graden 100er zahl anfangen... public void buttonsVorbereiten() { JButton knopf = null; for(int i = 100; i < 200; i++) { knopf = new JButton(); knopf.addActionListener(this); knopf.setActionCommand(""+i); buttonliste.add(knopf); } for(JButton button : buttonliste) { panel.add(button); } } public void spielfeldOberflaeche() { panel.setOpaque(true); panel.setBackground(Color.yellow); panel.setLayout(new GridLayout(10,10)); JButton knopf = null; add(panel); } public void menueZeileErzeugen() { //Konfiguration der Menuezeile. menueleiste = new JMenuBar(); menueleiste.setBackground(farbe3); setJMenuBar(menueleiste); //Konfiguration der verschiedenen Menues. dateimenue = new JMenu("Datei"); dateimenue.setForeground(farbe1); dateimenue.setBackground(farbe2); hilfemenue = new JMenu("Hilfe"); hilfemenue.setForeground(farbe1); hilfemenue.setBackground(farbe2); //Konfiguration der verschiedenen Menueeinträge starten = new JMenuItem("Starten"); starten.addActionListener(this); starten.setActionCommand("1"); starten.setForeground(farbe1); starten.setBackground(farbe2); zuruecksetzen = new JMenuItem("Neustarten"); zuruecksetzen.addActionListener(this); zuruecksetzen.setActionCommand("2"); zuruecksetzen.setForeground(farbe1); zuruecksetzen.setBackground(farbe2); ende = new JMenuItem("Beenden"); ende.addActionListener(this); ende.setActionCommand("3"); ende.setForeground(farbe1); ende.setBackground(farbe2); bedienung = new JMenuItem("Bedienungsanleitung"); bedienung.addActionListener(this); bedienung.setActionCommand("4"); bedienung.setForeground(farbe1); bedienung.setBackground(farbe2); version = new JMenuItem("Versionsdetails"); version.addActionListener(this); version.setActionCommand("5"); version.setForeground(farbe1); version.setBackground(farbe2); hilfemenue.add(version); hilfemenue.add(bedienung); dateimenue.add(starten); dateimenue.add(zuruecksetzen); dateimenue.add(ende); //Hinzufügen der Menues auf die Menuezeile. menueleiste.add(dateimenue); menueleiste.add(hilfemenue); setSize(500,400); } // ZUR ERKLÄRUNG: Ich hab bis jetz nur 1 Button in der ActionPerformed Methode berücksichtigt... Soweit Okay... Alle anderen machen bei einem Mausklick also nichts, was auch soweit in Ordnung ist.. Und wenn der Button mit dem ActionCommand "101" angeklickt wird kommt halt der nullpointer public void actionPerformed(ActionEvent e) { String befehl = e.getActionCommand(); if(befehl.equals("1")) { spiel.starten(); } if(befehl.equals("2")) { spiel.getSpielfeld().spielfeldResetten(); } if(befehl.equals("3")) { setVisible(false); dispose(); } if(befehl.equals("101")) { System.out.println("Guuuuuut"); } } }