1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Listener auf Swing Controls automatisch zuweisen

  • Stephe
  • 22. Juli 2009 um 23:38
  • Unerledigt
  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 22. Juli 2009 um 23:38
    • #1

    Ich habe ein JPanel mit einigen Steuerelementen, die neben der Steuerung über Tastatur und Maus auch per Codebefehl geändert werden können (zB. Sliderpositionen).

    Nun will ich jetzt nicht für jedes Steuerelement einen eigenen Listener implementieren, sondern alle Elemente aus dem Panel rauslesen und ihnen einen einzigen Listener zuweisen, aber welchen?


    1. Versuch: PropertyChangeListener oder StateChangeListener.
    Leider werden die immer gefeuert, selbst wenn man nur mit der Maus drüberfährt. Ich will natürlich nur Events auslösen wenn sich der Wert (Slider-Position, angeklickte Checkbox) ändert. Leider wird immer dasselbe Property ausgegeben, egal was man mit dem Steuerelement macht.

    Mein Workaround hat auch nicht funktioniert: Ich wollte die Events mit getOldValue() und getNewValue() überprüfen, aber die sind auch immer vom selben Typ, egal welche Property sich ändert.

    EDIT: Hab das Problem mit mehreren verschiedenen Listenern, je nach Typ, gelöst. Jetzt habe ich das nächste Problem: wie kann man die ButtonGroup aus einem JRadioButton rauslesen?

    Hat jemand eine Idee?

    3 Mal editiert, zuletzt von Stephe (23. Juli 2009 um 00:27)

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 23. Juli 2009 um 00:32
    • #2

    ich schätze mal getParent()?

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 23. Juli 2009 um 10:27
    • #3

    Eben nicht :(, da bekomm ich den Container wo die Buttons drin sind (also das JPanel)

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 28. Juli 2009 um 15:37
    • #4

    AFAIK unmöglich, da es nur eine einseitige Verbindung gibt.

    Code
    ButtonGroup g = new ButtonGroup();
    g.add(new JRadioButton());

    Die ButtonGroup überwacht die mit add hinzugefügten Buttons, aber die Buttons wissen davon eigentlich nichts. Du könntest allerdings deine eigene Button-Klasse schreiben, die eine zusätzliche Methode getButtonGroup() hat.

    Code
    public class SuperRadioButton extends JRadioButton {
    	private ButtonGroup group;
    	public SuperRadioButton() {
    		super();
    	}
    	public void setButtonGroup(ButtonGroup g) {
    		group = g;
    	}
    	public ButtonGroup getButtonGroup() {
    		return group;
    	}
    }
    Alles anzeigen

    Dann musst du halt die Buttons anders erstellen:

    Code
    ButtonGroup g = new ButtonGroup();
    SuperRadioButton b = new SuperRadioButton();
    g.add(b);
    b.setButtonGroup(g);

    Ob das sinnvoll ist? Wer weiß...
    Ob das hübsch ist? Nein.
    Ob das funktioniert? Ja.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern