Hallo,
Ich habe ein Problem mit meinem Programm:
Das Programm ist eine Art "Spiel" in dem es 49 JPanels gibt, welche man a) ALLE mit einem Button durch zufällige Farben färben kann oder durch einen jeweiligen Klick auf ein einzelnes JPanel.
Die JPanel Kästchen sind stardmäßig auf weiß, und durch den Rücksetz- Button kann man die gefärbten JPanels auch wieder "zurücksetzen", sprich, weiß färben.
Nun zum Problem:
Ich habe bereits erfolgreich das Färben von einzelnen Kästchen ausprogrammiert, nur beim Zurücksetzen der Farben kommt ständig ein Fehler:
Hier ist das Programm:
Ich wollte das Zurücksetzen lösen, indem ich einen Listener auf den Button setze, und abfange falls dieser gedrückt wird. Anschließend wird die innere Klasse aufgerufen wo sich der Code befindet zum Zurücksetzen der Farben.
Leider funktionert das halt leider nicht =(
Ich habe schon stundenlang überlegt aber mir fällt kein anderer Lösungsweg ein wie ich es noch lösen könnte.
Wäre froh wenn mir jemand helfen könnte!
Liebe Grüße,
Jörg
Ich habe ein Problem mit meinem Programm:
Das Programm ist eine Art "Spiel" in dem es 49 JPanels gibt, welche man a) ALLE mit einem Button durch zufällige Farben färben kann oder durch einen jeweiligen Klick auf ein einzelnes JPanel.
Die JPanel Kästchen sind stardmäßig auf weiß, und durch den Rücksetz- Button kann man die gefärbten JPanels auch wieder "zurücksetzen", sprich, weiß färben.
Nun zum Problem:
Ich habe bereits erfolgreich das Färben von einzelnen Kästchen ausprogrammiert, nur beim Zurücksetzen der Farben kommt ständig ein Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Kacheln$FarbButtonlauscher.actionPerformed(Kacheln.java:110)
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)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(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.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(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)
Hier ist das Programm:
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class Kacheln{
JFrame frame;
JPanel[] panels;
JButton farben;
JButton zsetzen;
JPanel bigPanel;
public void start(){
// Anlegen des Frames und Buttons
frame = new JFrame();
farben = new JButton();
zsetzen = new JButton();
bigPanel = new JPanel();
// Eigenschaften vom Frame und den Buttons
frame.setLayout(null);
frame.setTitle("Kacheln");
frame.setSize(520,600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
farben.setText("Farben");
farben.setBounds(20, 520, 100, 20);
zsetzen.setActionCommand("farben");
farben.addActionListener(new FarbButtonlauscher());
zsetzen.setText("Zurücksetzen");
zsetzen.setBounds(130, 520, 120, 20);
zsetzen.setActionCommand("zurueck");
zsetzen.addActionListener(new FarbButtonlauscher());
bigPanel.setBounds(4, 0, 500, 500);
bigPanel.setLayout(new GridLayout(7,7,1,1));
// 49 kleine Panels anlegen
for(int i=0; i < 49; i++){
panels = new JPanel[49];
panels[i] = new JPanel();
panels[i].setBackground(Color.WHITE);
bigPanel.add(panels[i]);
panels[i].addMouseListener(new PanelGedrueckt());
}
// Hinzufügen zum Frame
frame.getContentPane().add(bigPanel);
frame.getContentPane().add(farben);
frame.getContentPane().add(zsetzen);
} // Start- Methoden- Ende
class PanelGedrueckt implements MouseListener{
public void mouseClicked(MouseEvent e) {
JPanel geklicktesPanel = new JPanel();
int rot = (int) (Math.random() *255);
int grün = (int) (Math.random() *255);
int blau = (int) (Math.random() *255);
Color neueFarbe = new Color(rot, grün, blau);
geklicktesPanel = (JPanel) e.getComponent();
geklicktesPanel.setBackground(neueFarbe);
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
} // Klasse PanelGedrückt ENDE
public class FarbButtonlauscher extends Kacheln implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("zurueck")){
for(int k = 0; k < 49; k++){
panels[k].setBackground(Color.WHITE);
}
}
}
}
public static void main(String[] args){
Kacheln los = new Kacheln();
los.start();
}
}
Ich wollte das Zurücksetzen lösen, indem ich einen Listener auf den Button setze, und abfange falls dieser gedrückt wird. Anschließend wird die innere Klasse aufgerufen wo sich der Code befindet zum Zurücksetzen der Farben.
Leider funktionert das halt leider nicht =(
Ich habe schon stundenlang überlegt aber mir fällt kein anderer Lösungsweg ein wie ich es noch lösen könnte.
Wäre froh wenn mir jemand helfen könnte!
Liebe Grüße,
Jörg