Komponenten einer unbestimmten Anzahl und MouseListener

Status
Nicht offen für weitere Antworten.

MyPiano

Mitglied
Hallo,

ich habe ein Problem mit dem MouseListener. Und zwar restelle ich mit einer Schleife eine unbekannte Anzalh von Panels, auf denen ein Bild gemalt wird. Auf diese Panels soll jetzt geklickt werden, damit Informationen (bei mir vom Typ PodcastItem - eine Klasse, die ich geschrieben habe) angezeigt werden können. Die einzelnen PodcastItems enthalten Informationen über ein Podcastobjekt und ich möchte Titel, Beschreibung etc. auslesen, was soweit auch klappt. Bei der Erstellung weise ich dem JPanel Objekt dummy ein PodcastItem zu, aus dem dann später mit dem MouseListener bei einem Klick die relevanten Informationen herausrückt. Soweit so gut. Das Problem ist, dass ich bei sagen wir drei Objekten immer, egal auf welches Panel ich Klicke die Information vom PodcastItem des ersten Schleifendurchlaufs erhalte. Weiß jemand, wie man das ändern kann? Hier ist ein Codeausschnitt. Alles kann ich leider nicht posten, das wäre zu unübersichtlich, da so viel verbunden ist.

Code:
     //Die Variable dummy ist vom Typ JPanel
    @SuppressWarnings("empty-statement")
    public void showPodcast(PodcastItem p) {
        boolean b = true;
        int i = 1;
        String tag;
        // dummyPodcast = p;
        do {
            if ((xX + image.getWidth(observe) <= (this.getWidth() - 30))) {
                tag = p.getPodcastTitle();
                dummy = new BackgroundP(image, p);
                dummy.setName("panelT" + Integer.toString(i));
                dummy.setBounds(xX, yY, image.getWidth(observe), image.getHeight(observe2));
                dummy.addMouseListener(new MouseListener() {

                    public void mouseClicked(MouseEvent e) {
                        areaDummy.setText(dummy.pod.getPodcastDescription());
                    }

                    public void mousePressed(MouseEvent e) {
                        //throw new UnsupportedOperationException("Not supported yet.");
                    }

                    public void mouseReleased(MouseEvent e) {
                        //throw new UnsupportedOperationException("Not supported yet.");
                    }

                    public void mouseEntered(MouseEvent e) {
                        //throw new UnsupportedOperationException("Not supported yet.");
                    }

                    public void mouseExited(MouseEvent e) {
                        //throw new UnsupportedOperationException("Not supported yet.");
                    }
                });
                cp.add(dummy);
                labDummy = new JLabel();
                labDummy.setFont(new Font("Microsoft Sans Serif", Font.PLAIN, 13));
                labDummy.setBounds(xX, yY + image.getHeight(observe2) + 3, 200, 15);
                labDummy.setText(tag);
                cp.add(labDummy);
                xX += image.getWidth(observe) + 60;
                i++;
                repaint();
                break;
            } else {
                xX = 30;
                yY += image.getHeight(observe2) + 35;
                continue;
            }
        } while (b == true);
    }

Viele Grüße

MyPiano
 

Morgyr

Aktives Mitglied
Wie soll denn getPodcastDescription() überhaupt wissen, auf welchen Text geklickt wurde? Der kann doch immer nur das gleiche ausgeben, ohne irgendwelche Informationen.
Ich würde einen MouseListener erstellen den du jedem label zuweist. Über den MouseEvent ermittelst du den richtigen Label und schickst den als Parameter mit an getPodcastDescription().

Ansonsten: Wenn du die Methoden von MouseListener nicht alle benötigst, dann nimm am besten den MouseAdapter. Dann musst du nur die Methode überschreiben, die du wirklich brauchst, den Rest schreibst du dann nicht mehr hin.
 

MyPiano

Mitglied
Danke für den Tipp mit dem MouseAdapter. :)

Wie soll denn getPodcastDescription() überhaupt wissen, auf welchen Text geklickt wurde? Der kann doch immer nur das gleiche ausgeben, ohne irgendwelche Informationen.
Ich würde einen MouseListener erstellen den du jedem label zuweist. Über den MouseEvent ermittelst du den richtigen Label und schickst den als Parameter mit an getPodcastDescription().

Das ist ja genau das Problem, das ich jetzt habe nur in Grün. Die Anzahl der Labels/Panels weiß ich im vorraus nicht und mit dem Panel mache ich im Moment eigtentlich das gleiche.
 

voidee

Mitglied
schade dass der Code nicht ausführlicher ist.

das Problem ist, dass du im MouseListener immer direkt auf dummy zugreifst, dass eine Variable in der umgebenden Klasse ist. Du musst im Listener erstmal das richtige Panel, und dann das entsprechende Element ermitteln, etwa so:

Code:
public void public void mouseClicked(MouseEvent e) {
  if (e.getSource() instanceof JPanel) {
    JPanel p = e.getSource();
    Pod pod = p.getPod();   // <-- 1. irgendwie musst du das pod ermitteln
                                       //       2. getPod() gibts natürlich nicht im JPanel
                                       //       3. welches Objekt benötigst du? ein Pod?

    // jetzt kannst du den Text setzen
    areaDummy.setText(pod.getPodcastDescription());
}
[/code]
 

MyPiano

Mitglied
Jetzt klappt es. :) Vielen dank euch beiden für die Erklärung/Hinführung.

@voidee:

pod ist eine Variable aus einer Klasse. Diese Klasse extends JPanel. Ich die Panelklasse dann nur meinen Bedürfnissen angepasst. ;)

Viele Grüße

MyPiano
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
G Komponenten einer Java-App von einer anderen auslesen AWT, Swing, JavaFX & SWT 9
M Komponenten einer Anwendung in JTree strukturiert auflisten? AWT, Swing, JavaFX & SWT 4
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
M Swing Komponenten enablen? AWT, Swing, JavaFX & SWT 4
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
G swing Komponenten verrutschen ständig... AWT, Swing, JavaFX & SWT 6
D Mit GridBayLayout Komponenten anordnen AWT, Swing, JavaFX & SWT 6
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Farbänderung von Komponenten wird nicht wirksam AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
T Sich überlappende Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
R Swing Komponenten klein angezeigt AWT, Swing, JavaFX & SWT 10
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
Kr0e AWT Komponenten in JPanel AWT, Swing, JavaFX & SWT 6
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
O Größe von Komponenten im JFrame manuell verändern AWT, Swing, JavaFX & SWT 2
H Komponenten anwendugsweit formatieren AWT, Swing, JavaFX & SWT 6
M Swing Komponenten mit fester Größe an Fensterrand(JFrame) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben