event weiterleitung an übergeordnete klasse

Status
Nicht offen für weitere Antworten.

vidi

Aktives Mitglied
hi leute!
habe ein kleines problem mit meinen events.
ich habe mir eine combobox nachgebaut, die klasse erbt von jcomponent und ihr inhalt bestehend aus einem jtextfield und einer jlist (befindet sich in einem jsrollpane).
das eventhandling innerhalb dieser klasse funktioniert auch. sprich man klickt auf einen eintrag in der list und der wandert dann hoch ins textfeld.

da ich in meinem programm gui und "verarbeitung" (die zurzeit nur aus eventlistenern besteht) getrennt habe, sie die konstellation wie folgt aus:

SteuerungsKlasse -> erzeugt eine instanz der "verarbeitungsklasse(diese implementiert die listener) und danach erzeugt sie eine instanz der gui klasse und übergibt dem konstruktor die eventlistener.

in der gui klasse befindet sich meine "combobox".

was muss ich jetzt machen damit meine verarbeitungsklasse mitbekommt das in der "combobox" z.b. jemand auf das textfeld meiner "combobox" geklickt hat?? mit der standart combobox geht das ja schließlich auch :). ich müsste doch jetzt eigendlich die events die bei dem textfeld der "combobox" auftreten an die events der "combobox" umleiten oder? ich steh mir grade selber ziemlich auf dem schlauch..bin über jede hilfe dankbar!

greetz

ben
 

zubi

Aktives Mitglied
Das versteh' ich jetzt nicht: Wenn die "Verarbeitungsklasse" die Listener implementiert, dann sollte die bei den entsprechenden Komponenten, welche die Ereignisse werfen, angemeldet werden und über neue Events vom Subjekt (-->Observer Pattern) benachrichtigt werden. Das isses doch was du willst, oder?
 

vidi

Aktives Mitglied
hmm..sry das es vieleicht nicht ganz eindeutig ist..was genau meinst du mit anmelden bei der componente..? oberflächen geschichten sind noch relative neuland für mich.. danke für deine hilfe..
 

vidi

Aktives Mitglied
meinst du das ich die listener im konstruktor der komponente mit übergeben soll..? weil da hab ich auch schon dran gedacht..aber das brauch ich ja z.b. bei ner normalen combobox auch nicht..also kann das doch nicht der richtige weg sein oder..?
 

zubi

Aktives Mitglied
Kein Problem :)

Mit anmelden meine ich sowas in der Art:
Code:
this.fSolveButton.addActionListener(new SolveListener());
Wobei die Klasse SolveListener das Interface ActionListener implementiert. Das bedeutet, dass bei jedem Klick auf fSolveButton die Methode actionPerformed(...) von SolveListener aufgerufen wird. SolveListener meldet sozusagen ihr Interesse an auftretenden Events beim fSolveButton an :).
 

vidi

Aktives Mitglied
hmm..funktioniert so wie ich das hier hab mal nicht..
wieso verhält sich meine componente denn nicht so wie jede andere..? das "registrieren" muss ich doch bei nem textfeld oder so auch nicht machen..?!? da sag ich doch einfach addactionlistene(meinlistener) und dann lüppt das..
 

zubi

Aktives Mitglied
das "registrieren" muss ich doch bei nem textfeld oder so auch nicht machen..?!? da sag ich doch einfach addactionlistene(meinlistener) und dann lüppt das..
addActionListener() mein ich ja mit registrieren...

Zeig bidde mal Ausschnitte aus den relevanten Klassen.
 

vidi

Aktives Mitglied
Die ComboBox
Code:
public class myComboBox extends JComponent implements MouseListener
{
    JTextField textfield = new JTextField();
    DefaultListModel listModel = new DefaultListModel();
    JList list = new JList(listModel);
    JScrollPane dropdown = new JScrollPane(list);
       
    public myComboBox(int columns)
    { 	
    	setVisible(true);
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setOpaque(false);
        
        textfield.setColumns(columns);
        textfield.addActionListener(new dialog_steuerung());
        
        list.setVisibleRowCount(4);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.addMouseListener(this);    
        
        dropdown.setVisible(false);
        
        add(textfield);
        add(dropdown);
        
    } 

    ...

    public synchronized void addActionListener(ActionListener al) 
    {
        listenerList.add(ActionListener.class, al);
    }
    
    public synchronized void addMouseListener(MouseListener ml) 
    {
        listenerList.add(MouseListener.class, ml);
    }

    public synchronized void addKeyListener(KeyListener kl) 
    {
        listenerList.add(KeyListener.class,kl);
    }
    

    ...

Die Event Steuerung

Code:
public class dialog_steuerung implements KeyListener, ActionListener, MouseListener
{	
public void actionPerformed(ActionEvent evt)
    {
	System.out.println("ACTION-EVENT!!!!!");			
    }
	
    public void keyPressed(KeyEvent evt)
    {
    	System.out.println("KEY-EVENT!!!!!!");
    }

    ...

Die GUI Klasse

Code:
public class gui extends JFrame
{

	JPanel masterPanel = new JPanel();
		
	myComboBox mycom = new myComboBox(14);
		
	public gui(KeyListener kl, ActionListener al, MouseListener ml)
	{

		super("Dialog");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	
		...

                mycom.setDocument(new SetTextFieldProperty(4, false, true));
    		mycom.addKeyListener(kl);
    	    
                ...
    			
         }  

}

Die Hauptklasse

Code:
public class meinprog
{
   public static void main(String[] args)
   {
      dialog_steuerung  ds = new dialog_steuerung();
      gui mygui = new gui(cmd, cmd, cmd);
   }
}

Hoffe dir reichen die auszüge..
und wenn das völliger mumpiz ist was ich da mach, sags bitte :) ich wills ja lernen wies richtig geht, hab halt bishher nie was mit oo zutun gehabt ;-)
 

zubi

Aktives Mitglied
wohoow! jop, da haste einige Konzepte vermischt ;).

1. (nur so am Rande) In Java ist es Konvention, Klassen mit einem Grossbuchstaben zu beginnen.

2. Wenn du GUI und Eventhandling trennen willst, dann sollte MyComboBox keinen MouseListener implementieren und die add-Methoden müssen in diesem Fall auch nicht überschrieben werden.
Wenn du nun nur DialogSteuerung für die Behandlung einsetzten willst und diese beispielsweise auf Mouse-Events kommend von list aus MyComboBox reagieren soll, dann musst du DialogSteuerung folgendermassen bei der list anmelden:
Code:
list.addMouseListener(new DialogSteuerung());
Fürs Verständnis: Wenn ich nun in die Liste klicke, dann wird list den dadurch gefeuerten MouseEvent an die Instanz von DialogSteuerung leiten, genauer an eine der Methoden vom Interface MouseListener (mousePressed(), mouseClicked() usw.).

Bevor ich fortfahre: Schreibe bitte, welche GUI-Komponente auf welche Ereignisse (Key, Mouse etc) reagieren soll.
 

vidi

Aktives Mitglied
zu 1. das hab ich auch, hab das nur umgeändert fürs verständnis.. :)

zu 2. habe den mouse listener nur implementiert weil das etwas ist was die combobox immer machen soll(in der liste was auswählen und im textfeld dann anzeigen)
das event um das es sich bei mir dreht ist z.b. ein keyevent im textfeld meiner combobox(ich möchte dann die liste aufgrund der eingabe verkleinern). dieses event soll dann zur steuerungs klasse gefeuert werden.. nochmal zusammengefasst, (die steuerungsklase soll mitbekommen wenn sich im textfield meiner combobox was tut.
 
Status
Nicht offen für weitere Antworten.
Ä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
D Event in Fenster ausgeben + Observer + kein Plan 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

Ähnliche Java Themen


Oben