Event in Fenster ausgeben + Observer + kein Plan

Testklasse schreiben bevor eigentliche Klasse geschrieben?

  • Ja, da kann man gleich seine Impelementierung überprüfen.

    Stimmen: 1 100,0%
  • Nein, lieber danach eine Testklasse schreiben.

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    1

Dungo

Mitglied
Habe ein Projekt wo ich nicht so gut weiter komme wie gedacht, daher wollte ich erst mal die Einfache Version davon zu laufen bekommen bevor ich mich zu dem Erweiterungen wage.
http://www.java-forum.org/awt-swing-swt/102232-feedback-fenster-ausgeben.html#post651764

In zwei verschiedenen Klassen wird das selbe Event abgesetzt (Anwender drückt "speichern" Taste nachdem er was geschriben / geändert. Meine Aufgabe ist ein Feedback zu schreiben.

Ich habe zwei Variablen die jedes Mal wenn das Event eintritt um eins erhöht werden.
Meine "geänderte" Idee / Konzept.
Wenn das Event eingetretten ist die Variablen um eins erhöhen, dann denn Beobachter benachrichtigen um ein Feedback in Fenster auszugeben.

Zur veranschaulichen, wie in der Bsp. Klasse hier aber ....

import javax.swing.*;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.*;
import java.awt.image.ImageObserver;

public class fensterTest2 implements ActionListener{ //Interface von ActionListener implementiert
//
JButton button;
private int anzahlLocClicks = 10;
private int anzahlGlobalClicks = 10;
private int prozentAnzeige;

public static void main(String args[]){
fensterTest2 gui = new fensterTest2();
gui.startEvent();

}



public void startEvent(){
JFrame displayFenster = new JFrame();

button = new JButton("Start Mein Event");

button.addActionListener(this);
displayFenster.getContentPane().add(button);
displayFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
displayFenster.setSize(600,300);
displayFenster.setVisible(true);


}



public void actionPerformed(ActionEvent event){ // hier gibt aus was passiert wenn event eingetretten
button.setText("Du bist "+ prozentAnzeige + "% BESSER als der Rest!!!!");
prozentAnzeige = (anzahlLocClicks*100)/anzahlGlobalClicks;
anzahlLocClicks++;
anzahlGlobalClicks = anzahlGlobalClicks+3;
button.revalidate();
}


}

_____________________________________________________________
Ich möchte die Anzeige von button.setText("Du bist "+ prozentAnzeige + "% BESSER als der Rest!!!!"); aus eine Andere Klasse importieren lassen wie z.B. (noch mal meine alte) Feedback Klasse:

Ich muss dann noch ein Beobachter implementieren welcher aufgerufen wird wenn sich die Werte der anzahlLocClicks, anzahlGlobalClicks Variablen ändern ? oder bin ich jetzt total daneben ???

Die Tipps von der Ersten Posting (s.o.) waren einleuchten, aber irgendwie bin ich nich weiter gekommen .... habe den Eindruck dass ich den Wald von lauter Bäume nicht sehen kann ??? :bahnhof::L
_____________________________________________________________

public class ShowFeedbackRelative1 implements ShowFeedback, FeedbackObserver {

private int anzahlLocClicks;
private int anzahlGlobalClicks;
private FeedbackSimulatorInterface feedbackSimulator;

public ShowFeedbackRelative1(FeedbackSimulatorInterface feedbackSimulator){
this.feedbackSimulator = feedbackSimulator;
feedbackSimulator.registerFeedbackObserver(this);
}


public void update(int anzahlLocClicks, int anzahlGlobalClicks ){
this.anzahlLocClicks = anzahlLocClicks;
this.anzahlGlobalClicks = anzahlGlobalClicks;
feedback();
}

public void feedback(){
int relativeBeiträge;
relativeBeiträge = (anzahlLocClicks * 100) / anzahlGlobalClicks;
System.out.println("Vielen Dank, sie haben mehr Beiträge als " + relativeBeiträge+ "% der Teilnehmer");
}
}
 

André Uhres

Top Contributor
Ich möchte die Anzeige von button.setText("Du bist "+ prozentAnzeige + "% BESSER als der Rest!!!!"); aus eine Andere Klasse importieren lassen

Versuch's mal so:
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class FensterTest3 implements ActionListener, Observer {

    private final JButton button1, button2;
    private final Controller controller;

    public FensterTest3() {
        controller = new Controller(this);
        JFrame displayFenster = new JFrame("FensterTest3");
        displayFenster.setLayout(new FlowLayout());
        button1 = new JButton("Mein Event 1");
        button2 = new JButton("Mein Event 2");
        button1.addActionListener(this);
        button2.addActionListener(this);
        displayFenster.getContentPane().add(button1);
        displayFenster.getContentPane().add(button2);
        displayFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        displayFenster.setSize(600, 300);
        displayFenster.setLocationRelativeTo(null);
        displayFenster.setVisible(true);

    }

    public void actionPerformed(final ActionEvent event) {
        controller.addClicks(event.getSource(), 1);
    }

    public static void main(final String args[]) {
        Runnable gui = new Runnable() {

            public void run() {
                new FensterTest3();
            }
        };
        //GUI must start an EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }

    public void update(final Observable o, final Object arg) {
        Clicks clicks = (Clicks) arg;
        button1.setText("Du bist " + clicks.getProzent(button1) + "% BESSER als der Rest!!!!");
        clicks.getProzent(button2);
        button2.setText("Du bist " + clicks.getProzent(button2) + "% BESSER als der Rest!!!!");
    }
}

class Clicks extends Observable {

    private int anzahlGlobalClicks;
    private final Map<Object, Integer> localClicks;

    public Clicks() {
        localClicks = new HashMap<Object, Integer>();
    }

    public void addClicks(final Object object, final int count) {
        anzahlGlobalClicks += count;
        Integer clicks = 0;
        if (localClicks.containsKey(object)) {
            clicks = localClicks.get(object);
        }
        localClicks.put(object, clicks + count);
        setChanged();
        notifyObservers(this);
    }

    public int getProzent(final Object object) {
        int anzahlLocalClicks = 0;
        if (localClicks.containsKey(object)) {
            anzahlLocalClicks = localClicks.get(object);
        }
        return (anzahlLocalClicks * 100) / anzahlGlobalClicks;

    }

    @Override
    public String toString() {
        Set<Object> keySet = localClicks.keySet();
        String str = "";
        for (Object key : keySet) {
            str += localClicks.get(key);
            str += " ";
        }
        return "anzahlGlobalClicks=" + anzahlGlobalClicks + ", localClicks=" + str;
    }
}

class Controller {

    private Clicks clicks;

    public Controller(final Observer observer) {
        clicks = new Clicks();
        clicks.addObserver(observer);
    }

    public void addClicks(final Object object, final int count) {
        clicks.addClicks(object, count);
    }
}
 
Zuletzt bearbeitet:

Dungo

Mitglied
Hallo André, Danke für Deine Hilfe.

Ich glaube mein Hauptproblem ist immer noch dass ich mich zu umständlich ausdrucke ..
Hier noch mal meine Problem als Diagramm:

java_idee.gif


Im Hauptprogramm eine Webanwendung, fügen die Anwender neue Inhalte hinzu oder setzen Relationen zwischen den gespeicherten Inhalten. Sobald der Anwender fertig ist, wird die Arbeit gespeichert ("save" Knopf gedrückt). Beim speichern (Anwender klickt auf "save") wird ein Event ausgelöst, dies ist an zwei Stellen möglich, in zwei unterschiedlichen Klassen entweder in der Ev_Kl_1 oder in der Ev_Kl_2 Klasse. Dies ist davon abhängig wo der Anwender gerade gearbeitet hat. (Inhalte hinzufügen Ev_Kl_1, Relationen setezen Ev_Kl_2)

Meine Aufgabe ist es, jedes mal wenn der Anwender den"save" Knopf drückt ein Feedback auszugeben.

Meine Idee:
- mich nur um die zwei Events kümmern, von dem Rest von der Programm abstrahieren
- an den beiden Events ein Observer anhängen (darf es dasselbe sein?)
- dieser ruft eine Methode auf welcher die beiden Variablen anzahlGlobalClicks und anzahlLocalClicks
erhöht.
- Danach wird ein Feedback in (neues?) Fenster Ausgegben.
Es gibt mehreren Feebacks, welche über ein Feedback Interface aufgerufen werden. (es sollte später Möglich sein die Feebacks zu ändern oder neue hinzu zu fügen).

Habe versucht nach der Skizze den Programm zu schreiben (Dateien in Anhang, Rest hier da maximal 5 Dateien zu hochladen erlaubt):

Feeback Klassen:

Java:
public class ShowFeedbackRelative1 implements ShowFeedback, FeedbackObserver {
	
	private int anzahlLocClicks;
	private int anzahlGlobalClicks;
	private FeedbackSimulatorInterface feedbackSimulator;

	public ShowFeedbackRelative1(FeedbackSimulatorInterface feedbackSimulator){
		this.feedbackSimulator = feedbackSimulator;
		feedbackSimulator.registerFeedbackObserver(this);
	}
	
	
	public void update(int anzahlLocClicks, int anzahlGlobalClicks ){
		this.anzahlLocClicks = anzahlLocClicks;
		this.anzahlGlobalClicks = anzahlGlobalClicks;
		feedback();
	}
	
	public void feedback(){
		int relativeBeiträge;
		relativeBeiträge = (anzahlLocClicks * 100) / anzahlGlobalClicks;
		System.out.println("Vielen Dank, sie haben mehr Beiträge als " + relativeBeiträge+ "% der Teilnehmer");				
	}
}

Java:
public class ShowFeedbackHistory implements ShowFeedback, FeedbackObserver{
	
	private int anzahlLocClicks;
	private int anzahlGlobalClicks;
	private FeedbackSimulatorInterface feedbackSimulator;
	
	public ShowFeedbackHistory(FeedbackSimulatorInterface feedbackSimulator){
		this.feedbackSimulator = feedbackSimulator;
		feedbackSimulator.registerFeedbackObserver(this);
	}
	
		public void update(int anzahlLocClicks, int anzahlGlobalClicks){
		this.anzahlLocClicks = anzahlLocClicks;
		feedback();
	}
	public void feedback(){
		System.out.println("Vielen Dank, Sie haben bereits " + anzahlLocClicks + " Beiträge");
	}
		
	
}

.....

Falls ich keinen Denkfehler bezüglich der realisierung gemacht habe, sind zur Zeit dies meine Probleme:

wo muss mein Fenster hin, in der FeedbackSimulator oder feedbackTester Klasse?
muss ich für den Update der Variablen eine extra Klasse hinschreiben?

Am Ende sollte es so aussehen oder zumindest ählich wie in der fensterTest2.java Klasse.

Viele Dank auch für die bisherige Hilfe !
 

Anhänge

  • FeedbackSimulatorInterface.java
    215 Bytes · Aufrufe: 1
  • feedbackTester.java
    1,8 KB · Aufrufe: 1
  • FeedbackSimulator.java
    1,3 KB · Aufrufe: 1
  • FeedbackObserver.java
    108 Bytes · Aufrufe: 1
  • ShowFeedback.java
    60 Bytes · Aufrufe: 1
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
W JavaFX Etwas Tabellenartiges + Cell-Content-Changed-Event (o.ä.) AWT, Swing, JavaFX & SWT 30
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
B Swing Windowbuilder Rückgabewert im Event AWT, Swing, JavaFX & SWT 3
Z Befehl Action Event Verlassen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
Sugan Swipe Event? AWT, Swing, JavaFX & SWT 8
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
H Event Handling JavaFx - auf Event warten AWT, Swing, JavaFX & SWT 4
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
M Swing OnLoad-Event o. Ä. AWT, Swing, JavaFX & SWT 3
D Event Handling in Komplexen Anwendungen AWT, Swing, JavaFX & SWT 9
D Event Handling "Plötzlich" kein mouseMoved-Event AWT, Swing, JavaFX & SWT 2
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
J Swing JMenuItem-Event?? AWT, Swing, JavaFX & SWT 3
J Swing JTable-Event für einen Select?? AWT, Swing, JavaFX & SWT 3
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
F Event Handling AWT, Swing, JavaFX & SWT 7
J Button Event nur einmal ausführen AWT, Swing, JavaFX & SWT 3
S SWT Shell durch Event in der Größe verändern AWT, Swing, JavaFX & SWT 7
J Speichern, Event, Hintergrund getAppletContext AWT, Swing, JavaFX & SWT 2
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
T Anzahl Event Listeners AWT, Swing, JavaFX & SWT 4
A Swing JButton int im Event AWT, Swing, JavaFX & SWT 9
G Swing Onkeyup Event AWT, Swing, JavaFX & SWT 3
P Action Event abfangen etwas anders? AWT, Swing, JavaFX & SWT 2
3 Swing NullPointerException in AW Event-0? AWT, Swing, JavaFX & SWT 5
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
P Swing Event das ausgelöst wird, sobald Änderung der Größe Abgeschlossen ist AWT, Swing, JavaFX & SWT 4
A Shift-Tab-Event auslösen AWT, Swing, JavaFX & SWT 5
T Event Dispatch Thread und noch ein Thread AWT, Swing, JavaFX & SWT 7
W Swing Event bei Schließen des Fensters AWT, Swing, JavaFX & SWT 6
A Probleme mit dem KeyReleased-event AWT, Swing, JavaFX & SWT 3
J Doppelklick Event AWT, Swing, JavaFX & SWT 32
jueki Event bei Änderung der Spaltenbreite in einem JTable AWT, Swing, JavaFX & SWT 15
D jtabbedpane Event VOR tab-Wechsel AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Event Problem AWT, Swing, JavaFX & SWT 5
M JTree => Event Dispatching Error AWT, Swing, JavaFX & SWT 2
H warum kann ich das focus event nicht abfangen ? AWT, Swing, JavaFX & SWT 5
X Den Wert von JSpinner setzen ohne Event AWT, Swing, JavaFX & SWT 3
H KeyUp-Event/Ereignis AWT, Swing, JavaFX & SWT 6
C Event Frage AWT, Swing, JavaFX & SWT 7
M Swing WindowListener -> Event abbrechen? AWT, Swing, JavaFX & SWT 2
K JToggleButton deaktivieren (komplettes event nehmen) AWT, Swing, JavaFX & SWT 2
R JTextField - Event bei jedem Buchstaben AWT, Swing, JavaFX & SWT 2
R WindowClosing Event - Schließen rückgängig machen? AWT, Swing, JavaFX & SWT 2
M Actionlistener ohne Event -.-?! AWT, Swing, JavaFX & SWT 2
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
D PropertyChangeListener Event auswertung AWT, Swing, JavaFX & SWT 7
O FlowLayout Button Event zuweisen? AWT, Swing, JavaFX & SWT 7
J remove() components bei event von JComboBox AWT, Swing, JavaFX & SWT 2
I event AWT, Swing, JavaFX & SWT 6
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
X Checkboxen erstellt mit MouseClicked event AWT, Swing, JavaFX & SWT 10
Dragonfire Swing One componentResized Event AWT, Swing, JavaFX & SWT 14
data89 Was mache ich mit "Dispatched Event Thread"/Substance falsch? AWT, Swing, JavaFX & SWT 4
Kr0e Event simulieren AWT, Swing, JavaFX & SWT 5
S Tastatur Event auserhalb des fokuses aufnehmen AWT, Swing, JavaFX & SWT 4
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M Swing Event mit Button AWT, Swing, JavaFX & SWT 7
B Wie kann ich ein event wieder beseitigen AWT, Swing, JavaFX & SWT 2
R Checkboxen - Event mit Controller abfangen AWT, Swing, JavaFX & SWT 7
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
Dragonfire JTree, Selection via event AWT, Swing, JavaFX & SWT 7
K JButton auf JPanel in JTable (Darstellungs-/Event-Probleme) AWT, Swing, JavaFX & SWT 16
B JInternalFrame resize event AWT, Swing, JavaFX & SWT 2
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
D Event beim Laden eines JPanels? AWT, Swing, JavaFX & SWT 3
O Action Event auslösen bei unbekanntem JTextField AWT, Swing, JavaFX & SWT 3
R Registrieren um Event abzufangen AWT, Swing, JavaFX & SWT 3
N solange Maustaste gedrückt Event AWT, Swing, JavaFX & SWT 15
Daniel_L Nachrichten/Event aus nicht-modalen Dialogen abfragen? AWT, Swing, JavaFX & SWT 4
G Event an einer JComboBox registrieren AWT, Swing, JavaFX & SWT 8
S Welches Event beim ändern einer Zelle in einer JTable AWT, Swing, JavaFX & SWT 4
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A Event von Login zu Main klasse AWT, Swing, JavaFX & SWT 2
E bei gedrückte Taste --> Bitte nur ein Event auslösen AWT, Swing, JavaFX & SWT 4
W Kein MouseKlick-Event bei Bewegung AWT, Swing, JavaFX & SWT 2
J In JTextfield bei event schreiben AWT, Swing, JavaFX & SWT 4
G Combobox Event AWT, Swing, JavaFX & SWT 4
C Event nach Größenänderung des Fensters AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben