Zum Inhalt springen

Dungo

Mitglieder
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Dungo

  1. Dungo

    Events

    Erst mal Vielen Dank für Deine Hilfe !! An sich ist es richtig, wenn das Event ausgelöst wird "save" Knopf drücken, sollten a) meine Variablen up-gedated werden ein Fenster aufgerufen werden welches Feedback anzeigt Habe ich es richtig verstanden? Der Hauptevent "save" (mein KlickEvent) ruft den Eventlistener auf, dieser löst ein weiteres Event aus? Von meiner Skizze ausgehend, kann ich den Observer 2 weg lassen Dann zwei Klassen, mit Variablen-update und Feedback-aufruf Methoden bei den Eventlistener (~Observer?) registrieren ... bis hier komme ich noch mit dann welches ist dann das Event meines Eventlisteners ... da komme ich nicht mehr ganz mit ...
  2. Dungo

    Events

    Hier noch mal die Skizze wie ich mir das ganze vorgestellt habe, bei den Fragezeichen war ich nicht sicher ob nötig oder nicht:
  3. Dungo

    Events

    Ich habe folgendes Problem Es gibt ein grosses Programm, wo der Anwender Neues hinzufügen kann oder Änderungen vornehemen kann. Dies geschiet mit drücken der "save" Taste, dort wird dann ein Event abgesetzt. Klassen (Ev_Kl_1 und Ev_Kl_2). Ich abstrahire von das ganze Rest, muss jedes mal wenn der Anwender "save" drückt ein Feedback ausgeben. Im Prinzip sollte es so funktionieren: 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{ 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(); // hier definiere ich mein fenster, unten die eigenschaften button = new JButton("Start Mein Event"); button.addActionListener(this); //registriere bei Button, werde in Liste aufgenommen -> // Argument MUSS objekt Klasse die ActionListener implementiert 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(); //hier kann ich noch mal klicken ... } } Ich möchte dass wenn ein Event eingetretten ist, die zwei Variablen erhöht werden UND dass ein Feedback in Fenster ausgegeben wird. Feedback wenn möglich aus einer Klasse, damit später dieses den Wünschen angepasst werden kann. Bis jetzt habe ich es so implementiert, mit dummy variablen und ohne Fenster. Klassen a) Interfaces a1)Observer Interface: public interface FeedbackObserver{ public void update (int anzahlLocClicks, int anzahlGlobalClicks); } ___________________ a2) feedback Simulator Interface public interface FeedbackSimulatorInterface { public void registerFeedbackObserver(FeedbackObserver FB); public void removeFeedbackObserver(FeedbackObserver FB); public void notifyFeedbackObservers(); } ___________________ a3) feedback Anzeige Interface public interface ShowFeedback { public void feedback(); } ___________________ Observer: public interface FeedbackObserver{ public void update (int anzahlLocClicks, int anzahlGlobalClicks); } ___________________ Simulation von der Eigentlicher Klasse wo das Event eintritt PROBLEM: EVENT IMPLEMENTIEREN welches Fenster aufruft UND Variablen updatet. import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; import javax.swing.*; import javax.swing.JButton; import javax.swing.JFrame; public class FeedbackSimulator implements FeedbackSimulatorInterface{ private ArrayList observerListe; private int anzahlGlobalClicks; private int anzahlLocClicks; public FeedbackSimulator(){ observerListe = new ArrayList(); } /*jetzt gibt es die Observer registrierer */ public void registerFeedbackObserver(FeedbackObserver FB){ observerListe.add(FB); } public void removeFeedbackObserver(FeedbackObserver FB){ // observer löschen int delObs = observerListe.indexOf(FB); if (delObs >= 0) {observerListe.remove(FB);} } public void notifyFeedbackObservers(){ for (int delObs = 0; delObs < observerListe.size(); delObs++ ){ FeedbackObserver konkretesObserver = (FeedbackObserver)observerListe.get(delObs); konkretesObserver.update(anzahlLocClicks, anzahlLocClicks); } } public void eventEingetretten() { // hier nur um Event zu simulieren, später an den Richtigen Event dranhängen anzahlLocClicks = anzahlLocClicks++; anzahlLocClicks = anzahlLocClicks+3; notifyFeedbackObservers(); } public void variablenTest(int anzahlLocClicks, int anzahlGlobalClicks){ // zum Testen wenn unsere zwei Variablen // anzahlGlobalClicks / anzahlLocClicks geändert wurden this.anzahlLocClicks = anzahlLocClicks; this.anzahlGlobalClicks = anzahlGlobalClicks; eventEingetretten(); } } ___________________ Testklasse um zu sehen ob der Feeback funktioniert, geht leider nur mit Dummy Variablen von Hand eingegeben. /*import javax.swing.*; import java.awt.Frame; import java.awt.event.*; public class feedbackTester { public static void main(String args[]){ FeedbackSimulator feedbackSimulator = new FeedbackSimulator(); ShowFeedbackHistory feedbackHistory = new ShowFeedbackHistory(feedbackSimulator); ShowFeedbackGratitude feedbackGratitude = new ShowFeedbackGratitude(feedbackSimulator); ShowFeedbackRelative1 feedbackRelative1 = new ShowFeedbackRelative1(feedbackSimulator); //hier paar testwerte das müsste der Hauptprogram liefern feedbackSimulator.variablenTest(17,17); try { Thread.sleep(1000); // 1000 milisekunden pause } catch(InterruptedException e){ } feedbackSimulator.variablenTest(10,100); try { Thread.sleep(1000); // 1000 milisekunden pause } catch(InterruptedException e){ } feedbackSimulator.variablenTest(20,75); try { Thread.sleep(1000); // 1000 milisekunden pause } catch(InterruptedException e){ } feedbackSimulator.variablenTest(30,100); } } FRAGE: wo und wie muss ich mein Event schreiben (klick event), und wie bekomme ich das Fenster hin. Hoffe es ist nicht zu kompliziert vormuliert um mein Anliegen zu verstehen. Danke schon in Voraus für Hilfe, Ideen, Vorschläge ....

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...