Erste Schritte Java MVC Problem

KranzKrone

Mitglied
Hallo,
ich habe mir ein kleines Programm mit den Observern Pattern geschrieben. Das Programm ändert immer die Buttonfarbe und Buttontext, nach Zufallsgenerator.

Zur Zeit beschäftigt mich die Frage, warum der Wechsel erst nach dem Zweiten Klick auf dem Button geschiet und dann aber immer beim nächsten Klick.

Hier mein Code:
Der Controller

Java:
package ModelViewController;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Controller implements ActionListener {
	
	// Initialisierung des Models
	private Model model = new Model();
	// Initialisierung der View, mit Übergabe des Controllers (dieser Klasse).
	private View view = new View(this);
	
	public Controller(){
		view.setVisible(true);
		model.addObserver(view);
	}

	/**
	 * An dieser Stelle kommen die Events aus der View an. 
	 * Diese werden mit Hilfe von Actioncommands übergeben.  
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand() != null)
			System.out.println("ActionCommand: " + e.getActionCommand());
		
		if(e.getActionCommand().equals("neueFarbe"))
			model.randomColor();
	}

}
Das Model
Java:
package ModelViewController;

import java.awt.Color;
import java.util.Observable;
import java.util.Random;

public class Model extends Observable {
	
	// Initialisierung
	private Color color = new Color(255, 255, 255);
	
	// methods
	public void randomColor(){
		// Hier erzeuge ich mir einen Zufallsgenerator.
		Random random = new Random();
		// per Zufallsgenerator erzeuge ich mir die einzelnen Farben (RGB)
		int color1 = random.nextInt(254);
		int color2 = random.nextInt(254);
		int color3 = random.nextInt(254);
		// ich erzeuge ein neues Farbobjekt
		this.setColor(new Color(color1, color2, color3));
		// hier informiere ich meine Observer
		notifyObservers(this);
		setChanged();
	}
	
	// getter and setter
	/**
	 * @return the color
	 */
	public Color getColor() {
		return color;
	}

	/**
	 * @param color the color to set
	 */
	public void setColor(Color color) {
		this.color = color;
	} 
	
}
Meine View
Java:
package ModelViewController;

import java.util.Observable;

public class View extends JFrame implements Observer {

	private static final long serialVersionUID = 1L;
	private SpringLayout springLayout = new SpringLayout();
	private JButton btnNeueHintergrundfarbe = new JButton("neue Hintergrundfarbe");

	/**
	 * Create the frame.
	 * @param controller 
	 */
	public View(Controller controller) {
		setLocationByPlatform(true);
		setVisible(true);
		setResizable(false);
		setTitle("ModelViewController");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 250, 91);
		
		getContentPane().setLayout(springLayout);
		
		
		springLayout.putConstraint(SpringLayout.NORTH, btnNeueHintergrundfarbe, 10, SpringLayout.NORTH, getContentPane());
		springLayout.putConstraint(SpringLayout.WEST, btnNeueHintergrundfarbe, 10, SpringLayout.WEST, getContentPane());
		springLayout.putConstraint(SpringLayout.SOUTH, btnNeueHintergrundfarbe, 51, SpringLayout.NORTH, getContentPane());
		springLayout.putConstraint(SpringLayout.EAST, btnNeueHintergrundfarbe, 232, SpringLayout.WEST, getContentPane());
		getContentPane().add(btnNeueHintergrundfarbe);
		btnNeueHintergrundfarbe.setActionCommand("neueFarbe");
		btnNeueHintergrundfarbe.addActionListener(controller);
		
	}

	@Override
	public void update(Observable o, Object arg) {
		if(arg instanceof Model){
			btnNeueHintergrundfarbe.setBackground(((Model) arg).getColor());
			btnNeueHintergrundfarbe.setText(((Model) arg).getColor().toString());
		}
		
	}
}
 
G

gasssssst

Gast

KranzKrone

Mitglied
Das Gasssst, deine Antwort ist Richtig, ich habe meine Observer zu erst informiert und dann erst setChange ausgelöst. Es muss natürlich anders herum sein.

Java:
    public void randomColor(){
        // Hier erzeuge ich mir einen Zufallsgenerator.
        Random random = new Random();
        // per Zufallsgenerator erzeuge ich mir die einzelnen Farben (RGB)
        int color1 = random.nextInt(254);
        int color2 = random.nextInt(254);
        int color3 = random.nextInt(254);
        // ich erzeuge ein neues Farbobjekt
        this.setColor(new Color(color1, color2, color3));
        // hier informiere ich meine Observer
        setChanged();
        notifyObservers(this);
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J "travelling salesman problem" mit Java Editor Java Basics - Anfänger-Themen 17
C Two-Center Problem in Java Java Basics - Anfänger-Themen 0
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
L Java reset button Problem Java Basics - Anfänger-Themen 3
L Java reset button Problem Java Basics - Anfänger-Themen 9
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
Amelie Java Problem Java Basics - Anfänger-Themen 2
T eclipse mit java 9 Problem? Java Basics - Anfänger-Themen 5
B problem mit java Java Basics - Anfänger-Themen 15
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
A Problem eines Anfängers bei Java Java Basics - Anfänger-Themen 6
O Compiler-Fehler Ein weiteres Java Problem Java Basics - Anfänger-Themen 3
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
H Interface Problem mit Java Editor Java Basics - Anfänger-Themen 15
J Problem mit java Dos-Applikation Java Basics - Anfänger-Themen 3
M Problem/Unsicherheit bei Java-Aufgaben Java Basics - Anfänger-Themen 11
G Problem: Java Projekt als ausführbare Jar Exportieren (Eclipse) Java Basics - Anfänger-Themen 10
K Java Projekt als ausführbare Jar Exportieren (Eclipse) Problem Java Basics - Anfänger-Themen 24
D Erste Schritte Problem mit dem Java-Editor Eclipse [Frage] Java Basics - Anfänger-Themen 13
P Tag der Zeitumstellung Sommer->Winterzeit (Java Calendar) Problem Java Basics - Anfänger-Themen 5
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
J Java Daten von Konsole einlesen (Spezielles Problem) Java Basics - Anfänger-Themen 6
R Problem mit Java-Chat Java Basics - Anfänger-Themen 2
T Problem mit java-editor + Scanner Java Basics - Anfänger-Themen 9
C JDK installieren Habe ein Problem bei Java install Java Basics - Anfänger-Themen 4
B JAVA Package Problem Java Basics - Anfänger-Themen 8
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
V Java Chat Programm Problem mit IP Addresse Java Basics - Anfänger-Themen 7
J Habe problem mit Java Java Basics - Anfänger-Themen 2
B Problem mit Dr. Java Java Basics - Anfänger-Themen 15
T Problem bei BeatBox aus Java-Von Kopf bis Fuß Java Basics - Anfänger-Themen 3
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
H JDK installieren Mac Problem mit Java SE 1.7 Java Basics - Anfänger-Themen 5
I Java von Kopf bis Fuß: Ratespiel-Problem Java Basics - Anfänger-Themen 20
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
M Java String " einfügen Problem Java Basics - Anfänger-Themen 2
G Java Dezimal Zahlen Internazialisation Problem Java Basics - Anfänger-Themen 7
I Problem mit Java Text Area Java Basics - Anfänger-Themen 14
S Problem mit java.awt Java Basics - Anfänger-Themen 3
S java versionen problem Java Basics - Anfänger-Themen 20
Z Problem mit Tutorial - Finde Kon.java nicht Java Basics - Anfänger-Themen 11
B Problem mit Java XML Java Basics - Anfänger-Themen 6
B Problem mit XML und Java Java Basics - Anfänger-Themen 2
F Methoden Java Freihand Problem Java Basics - Anfänger-Themen 4
turmaline Java Virtual Machine Launcher Problem Java Basics - Anfänger-Themen 1
J Java Installations/Deinstallations Problem. Java Basics - Anfänger-Themen 5
D Problem mit java.io.* Java Basics - Anfänger-Themen 6
M Problem bei einer Java-Aufgabe (Fakultäten) Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
D Problem mit Java für dummies Java Basics - Anfänger-Themen 2
K Java Array Problem Java Basics - Anfänger-Themen 3
M java.lang.NumberFormatException-Problem Java Basics - Anfänger-Themen 6
S Java problem, bitte um hilfe! Java Basics - Anfänger-Themen 9
J Problem mit Ausführen von Java-Dateien Java Basics - Anfänger-Themen 5
A Problem bei der Division mit Java Java Basics - Anfänger-Themen 4
E Datentypen ein java problem rekursiv loesen Java Basics - Anfänger-Themen 2
S Java Verständnis Problem Methoden etc. Java Basics - Anfänger-Themen 22
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
D Problem bei Java - Aufgabe Java Basics - Anfänger-Themen 7
B in & out class problem (java anfängeR) Java Basics - Anfänger-Themen 5
F Java Variablen Problem Java Basics - Anfänger-Themen 8
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
D Java Problem bitte um hilfe Java Basics - Anfänger-Themen 4
L Java [Beginner] Problem Java Basics - Anfänger-Themen 8
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
D Java per Konsole oder Batch öffnen - Problem Java Basics - Anfänger-Themen 4
S setVisible Problem bei java.awt Java Basics - Anfänger-Themen 9
J Anfänger-Problem: Rechnen mit Java Java Basics - Anfänger-Themen 3
T Java Bilderverwaltung - Image Fetcher Problem Java Basics - Anfänger-Themen 4
V Problem bei java Application Java Basics - Anfänger-Themen 3
B Java Desktop Wecker problem Java Basics - Anfänger-Themen 3
? Konsolenprogramm hat Problem mit java.awt oder javax.swing Java Basics - Anfänger-Themen 7
M Problem mit dem Klassen aus dem java.io Paket Java Basics - Anfänger-Themen 9
E java.util.ConcurrentModificationException Problem Java Basics - Anfänger-Themen 5
G java.io.File problem Java Basics - Anfänger-Themen 5
R Java Problem (mit NetBeans) - html gibt nur java logo aus Java Basics - Anfänger-Themen 7
M Problem mit Java unter Vista 64 Java Basics - Anfänger-Themen 4
S Seltsames Java Problem Java Basics - Anfänger-Themen 3
A Matisse oder Java Problem: JPanels werden riesig ? Java Basics - Anfänger-Themen 3
S Ausgabe auf der Java-Console (Java Problem) Java Basics - Anfänger-Themen 13
A Do/While Problem (Exception in thread "main" java. Java Basics - Anfänger-Themen 4
Nexu [JAVA] Problem mit den Fenstern Java Basics - Anfänger-Themen 2
D Problem bei einer Formel (Bin Java Neuling) Java Basics - Anfänger-Themen 3
D Java Rechner und Einlesen Problem (mit hasNext) Java Basics - Anfänger-Themen 2
G JAVA KARA PROBLEM Java Basics - Anfänger-Themen 4
F Problem mit auführen einer .bat Datei aus Java heraus Java Basics - Anfänger-Themen 24
I Problem mit import java.awt.*; Java Basics - Anfänger-Themen 5
J Java GUI Problem (throws.) Java Basics - Anfänger-Themen 3
S Problem beim kompilieren mit Java 1.4 Java Basics - Anfänger-Themen 4
A problem mit java.awt Java Basics - Anfänger-Themen 17
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
N Problem mit MySql und Java Java Basics - Anfänger-Themen 12
J Problem mit Java Zahlen Spiel Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben