Buttons sollen bei Mausklick einen String schreiben

waeve

Mitglied
Hallo :),

ich hab hier in kleines großes Problem. Ich habe eine Grafikoberfläche mit den Buchstaben a - z. Jeder dieser Buchstabe wurde als JPanel-Objekt angelegt und in einer ArrayList gespeichert.
Nun möchte ich jeden dieser Buttons per Mausklick dazu bringen den Buchstaben, zu dem er gehört, in eine Stringvariable zu schreiben.
Es scheitert aber auch schon daran einen einzelnen Button aus der Liste anzusprechen.
Trotz langer Rechere finde ich keine Lösung :bahnhof:


Java:
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

/**
 * Write a description of class GUI here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class GUI extends JFrame
{
    //Deklarieren der Attribute
     private JButton button;
     private JPanel hangmanPanel;
     private JPanel center1, center2, center3;
     private ArrayList<JLabel> hangmanArray;
     private ArrayList<JLabel> buchstabenArray;
     private JPanel centerPanel;
     private String eingabe;
     
     private int anzahlStriche;
    /**
     * Constructor for objects of class GUI
     */
    public GUI()
    {
       super("Fenster");
       setLocation(300,300);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       hangmanPanel= new JPanel();
       hangmanPanel.setLayout(new BorderLayout(5,5));
       centerPanel=new JPanel();
       centerPanel.setLayout(new BorderLayout(5,5));
       center1 = new JPanel();
       centerPanel.add(center1, BorderLayout.NORTH);
       center2 = new JPanel();
       centerPanel.add(center2, BorderLayout.CENTER);
       center3 = new JPanel();
       centerPanel.add(center3, BorderLayout.SOUTH);
       
       // ansatz anzahl der striche muss aus wortpool ermittelt werden
       anzahlStriche = 6;
       for(int i = 0; i<anzahlStriche; i++)
       {
            center1.add(new JLabel(new ImageIcon("img/strich.png")));
        }
       
       buchstabenArray = new ArrayList<JLabel>(26);
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/A.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/B.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/C.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/D.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/E.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/F.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/G.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/H.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/I.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/J.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/K.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/L.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/M.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/N.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/O.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/P.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/Q.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/R.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/S.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/T.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/U.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/V.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/W.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/X.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/Y.png")));
       buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/Z.png")));



Ich hoffe ihr könnt mir helfen :)
Vielen Dank im Vorraus
 

Timothy Truckle

Top Contributor
Nun möchte ich jeden dieser Buttons per Mausklick dazu bringen den Buchstaben, zu dem er gehört, in eine Stringvariable zu schreiben.
Es scheitert aber auch schon daran einen einzelnen Button aus der Liste anzusprechen.
Der erste Schritt wäre ja, [JAPI]JButton[/JAPI] statt [STRIKE][JAPI]JLabel[/JAPI][/STRIKE] zu verwenden...

[EDIT]Wenn dann noch jeder Button seinen eigenen[JAPI]ActionListener[/JAPI] bekommt bist Du schon fast am Ziel.[/EDIT]

bye
TT
 
Zuletzt bearbeitet:

waeve

Mitglied
Danke für die schnelle Antwort :)

Wie sieht das denn ungefähr aus mit den ActionListener? Ich kann mir das nicht vorstellen.
Ich hab die Liste so bekommen. Kann ich das einfach verändern oder hat das Einfluss auf den Rest des Codes?
 

Timothy Truckle

Top Contributor
Wie sieht das denn ungefähr aus mit den ActionListener?
Ich kann mir das nicht vorstellen.
Java:
buttonA.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent ae){
    gesamtText.append("A"); // gesamtText ist Variable in Deinem Objekt von Typ StringBuilder.
    textFeld.setText(geamtText.toString());
  }
})
Ich hab die Liste so bekommen. Kann ich das einfach verändern oder hat das Einfluss auf den Rest des Codes?
Das schöne an OOP ist, dass wenn man's richtig macht selbst größere Änderungen nur wenig umgebenden Code beeinflussen. So auch hier: nur die Generierung der Buttons ist betroffen...

bye
TT
 

L-ectron-X

Gesperrter Benutzer
Nur so noch als Einwurf: Was hältst du von [JAPI]Action[/JAPI]s bzw. [JAPI]AbstractAction[/JAPI] s?
Ist wahrscheinlich noch ein wenig übersichtlicher, als ne Hand voll anonymer Klassen. Und dabei wesentlich flexibler.

Könnte so in etwa aussehen:
Java:
JButton button = new JButton(new ExitAction("Beenden", exitIcon));
oder
Java:
JMenuItem exitItem = new JMenuItem(new ExitAction("Beenden", exitIcon));
oder...

Und schließlich die Action:
Java:
public class ExitAction extends AbstractAction {
   public ExitAction(String title, Icon icon) {
      super(title, icon);
   }

   public void actionPerformed(ActionEvent e) {
      //do something
   }
}
 

waeve

Mitglied
OK super :) Danke
Nun noch die Frage wie ich die einzelnen Buttons ansprechen kann um ihnen ihre "ToDo-Liste" zuzuweisen, denn sie gehen ja alle in diese ArrayList.
Und eine Verständisfrage hab ich noch.

(ActionEvent ae)

Wofür steht das ae?
 

Timothy Truckle

Top Contributor
OK super :) Danke
Nun noch die Frage wie ich die einzelnen Buttons ansprechen kann um ihnen ihre "ToDo-Liste" zuzuweisen, denn sie gehen ja alle in diese ArrayList.
Das hat L-ectron-X doch gezeigt. Mach eine eigene Spezialisierung von AbstactAction und übergib die dem Konstruktor des Buttons.

Und eine Verständisfrage hab ich noch.

(ActionEvent ae)

Wofür steht das ae?
Wie bei allen Methoden-Parametern ist dass der Name. OK, der ist nicht gut aber üblich...

bye
TT
 

waeve

Mitglied
Ich kann allerdings keinen beliebigen Button erzeugen sonder muss auf die implementierten Grafiken zugreifen, da diese die Buttons sind. Sie zeigen die Buchstaben A-Z. Wenn ich das Programm starte sehe ich diese. Nun möchte ich sie anklicken können. Dazu muss ich doch jedem eine Funktion zuweisen damit der dahinter verborgene Buchstabe erscheint.
Dazu muss ich jeder Zeile in meinem Code eine Zuweisung geben, damit sie weiß was sie tun soll. D. h. ich möchte jede Zeile dazu bringen, dass sie per Mausklick den Buchstaben ausgibt. Nun werden aber alle Grafiken mit folgender Zeile implementiert:

buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/H.png")));

Wie kann nun jeder dieser Zeile gesagt werden was sie tun soll?

Ich verstehe was Timothy Truckle machen will aber ich weis nicht, wie ich das für jeden Button machen kann. Weil wenn ich ButtonA eingebe wird mir Undefind wiedergegeben da es vorher nicht definiert wird.

Ich hoffe das mir auch zu dieser späten Stunde jemand antwortet :)
 

Timothy Truckle

Top Contributor
Ich kann allerdings keinen beliebigen Button erzeugen sonder muss auf die implementierten Grafiken zugreifen,
Das verstehe ich nicht, Du kanst Doch der AbstactAction ein beliebiges Icon übergeben:
AbstractAction (Java Platform SE 7 )
da diese die Buttons sind. Sie zeigen die Buchstaben A-Z.Wenn ich das Programm starte sehe ich diese.
Nein, es sind nur Labels.

Nun möchte ich sie anklicken können.
Dazu must Du statt der Labels Buttonm nehemen, dass sgten wir ja bereits.

Dazu muss ich doch jedem eine Funktion zuweisen damit der dahinter verborgene Buchstabe erscheint.
Dazu muss ich jeder Zeile in meinem Code eine Zuweisung geben, damit sie weiß was sie tun soll. D. h. ich möchte jede Zeile dazu bringen, dass sie per Mausklick den Buchstaben ausgibt. Nun werden aber alle Grafiken mit folgender Zeile implementiert:

buchstabenArray.add(new JLabel(new ImageIcon("img/Alphabet/H.png")));

Wie kann nun jeder dieser Zeile gesagt werden was sie tun soll?
Java:
buchstabenArray.add(new JLabel(new JButton(new AbstractAction("A", exitIcon)){
 @Override public void actionPerformed(ActionEvent e){
    // "A" zum Text hinzu
 }
});
[EDIT]Aus der anonymen AbstackAction-Klasse machst du nann noch eine innere, die das Icon und den String (hier "A") als Konstruktorparameter bekommt...[/EDIT]

bye
TT
 
Zuletzt bearbeitet:

waeve

Mitglied
Was haltet ihr denn von dieser Variante?
Das ist mir heute eingefallen.
Ist sicher nicht die schönste aber wenn man das für jeden Buchstaben macht funktioniert das auch.

Java:
    JLabel lblB = new JLabel("");
        lblB.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("mouseClicked lblB");
                }
            });
        lblB.setIcon(new ImageIcon(HangingBird.class.getResource("B.png")));
        lblB.setHorizontalAlignment(SwingConstants.CENTER);
        lblB.setBounds(86, 150, 66, 57);
        contentPane.add(lblB);

Bei dem anderen wusste ich nicht, wo ich ansetzen sollte um das zu verändern.

LG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
G Toolbar buttons sollen dialoge anzeigne statt pop up Java Basics - Anfänger-Themen 44
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
A Aktualisierung eines Buttons Java Basics - Anfänger-Themen 18
S Runde Buttons erstellen Java Basics - Anfänger-Themen 10
J Input/Output Input Buttons Html mit JSP Java Basics - Anfänger-Themen 3
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
T Buttons... Java Basics - Anfänger-Themen 1
U Javafx Array aus Buttons Java Basics - Anfänger-Themen 2
L Buttons außerhalb der sichtbaren Activity Java Basics - Anfänger-Themen 8
E Hilfe bei Buttons (GUI) Java Basics - Anfänger-Themen 3
D Mit Buttonklick Farbe der anderen Buttons verändern? Java Basics - Anfänger-Themen 2
L Buttons ansprechen Java Basics - Anfänger-Themen 1
F Mehrfaches Clicken eines Buttons Java Basics - Anfänger-Themen 1
H Buttons zeigen keine Reaktion Java Basics - Anfänger-Themen 6
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
H Java Buttons ausblenden bei inaktivität Java Basics - Anfänger-Themen 1
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
D Variable Anzahl an Buttons per Schleife Java Basics - Anfänger-Themen 7
TheSorm Anzeige fehler eines Buttons Java Basics - Anfänger-Themen 3
M Icons auf Buttons Java Basics - Anfänger-Themen 9
S Variablen Variable bei drücken eines Buttons ändern Java Basics - Anfänger-Themen 1
M Buttons funktionieren nicht Java Basics - Anfänger-Themen 4
lord239123 Buttons werden nicht angezeigt Java Basics - Anfänger-Themen 3
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
M Größe eines Buttons festlegen Java Basics - Anfänger-Themen 4
J Aktivierung eines Buttons nach Eingabe in Textfeldern (DocumentListener) Java Basics - Anfänger-Themen 4
O Position des Buttons wird nicht geändert.. Java Basics - Anfänger-Themen 6
K Erste Schritte GUI - Hintergrundbild und darauf Buttons Java Basics - Anfänger-Themen 2
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
U Methoden Methode zur Erstellung von Buttons Java Basics - Anfänger-Themen 11
H Icons in Buttons resizable? Java Basics - Anfänger-Themen 3
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
L OOP Buttons mit Pfeilen miteinander verbinden Java Basics - Anfänger-Themen 5
A Dropdown Liste - mit je zwei Verlinkungen und zwei ausführende Buttons Java Basics - Anfänger-Themen 3
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
S Hilfe bei Buttons Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
B Die Hintergrundfarbe eines deaktivierten buttons ändern? Java Basics - Anfänger-Themen 4
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
J durch drücken eines buttons text in einer textdatei speichern Java Basics - Anfänger-Themen 2
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
Fab1 Buttons auf ein Hintergrundbild(JFrame) setzen Java Basics - Anfänger-Themen 24
H Methode aufrufen beim Drücken eines Buttons im Boxlayout Java Basics - Anfänger-Themen 6
M Tabelle mit Buttons Java Basics - Anfänger-Themen 24
M Variablen via actionPerformed mit Buttons ändern Java Basics - Anfänger-Themen 7
K Durch ändern eines Buttons String füllen Java Basics - Anfänger-Themen 14
J Buttons Java Basics - Anfänger-Themen 19
G Buttons in ein Array umformen Java Basics - Anfänger-Themen 11
S Buttons übereinander legen - Reihenfolge Java Basics - Anfänger-Themen 2
M Buttons erscheinen erst bei Mouse-Over Java Basics - Anfänger-Themen 8
B Buttons Java Basics - Anfänger-Themen 9
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
1 Menü mit Buttons erstellen Java Basics - Anfänger-Themen 10
M Durchsichtige Buttons Java Basics - Anfänger-Themen 12
P OnClickListener für mehrere Buttons Java Basics - Anfänger-Themen 5
U Buttons einfügen (Leiste verschwunden!?) Java Basics - Anfänger-Themen 2
M Gui - Probleme mit Buttons Java Basics - Anfänger-Themen 4
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
E Android: OnClickListener erkennt Buttons nicht Java Basics - Anfänger-Themen 7
E Buttons in Android generieren? Java Basics - Anfänger-Themen 4
D Link over Buttons Java Basics - Anfänger-Themen 4
B Identifikation eines einzelnen Buttons aus mehreren Buttons per Schleife erzeugten Java Basics - Anfänger-Themen 4
Nicer Radio Buttons Gruppe Java Basics - Anfänger-Themen 2
G getControlPanelComponent JMF Buttons verstecken? Java Basics - Anfänger-Themen 7
K Buttons Funktionieren Nicht!!! Java Basics - Anfänger-Themen 8
manunana89 2 ActionListener auf 2 Buttons??? Java Basics - Anfänger-Themen 6
Mike90 verschieben von Buttons, ... Java Basics - Anfänger-Themen 18
F Buttons und Aktionen Java Basics - Anfänger-Themen 20
M dynamisches Clipboard mit Buttons Java Basics - Anfänger-Themen 5
H Buttons um sprache zu ändern. Java Basics - Anfänger-Themen 6
B Calculator - Buttons zusammenfassen Java Basics - Anfänger-Themen 8
0 Buttons mit Absatz Java Basics - Anfänger-Themen 6
B Buttons erstellen! Wie? Java Basics - Anfänger-Themen 2
D Buttons-die Wahrheit über sie Java Basics - Anfänger-Themen 11
G Buttons mit MouseOver Java Basics - Anfänger-Themen 5
M "Selbst erstellte" Buttons nicht sichtbar. Java Basics - Anfänger-Themen 20
Mörmel Variable Anzahl von Buttons erzeugen Java Basics - Anfänger-Themen 6
K Fenster mit Buttons hin und her schieben ? Java Basics - Anfänger-Themen 23
A in jTextField mit Hilfe von Buttons schreiben Java Basics - Anfänger-Themen 2
J Buttons Java Basics - Anfänger-Themen 3
M Buttons auf allen Masken Java Basics - Anfänger-Themen 4
G Alle Buttons in einer For Schleife ändern Java Basics - Anfänger-Themen 5
G Nicht benannte Buttons - Wenn gedrückt > Action Java Basics - Anfänger-Themen 24
T Buttons Resetten Java Basics - Anfänger-Themen 2
G Grafische Oberfläche mit Buttons und Actionlistener? Java Basics - Anfänger-Themen 27
D Buttons gehen trotz enebled(false) Java Basics - Anfänger-Themen 8
P Buttons Java Basics - Anfänger-Themen 6
G Panels und Buttons Java Basics - Anfänger-Themen 5
P Eigenschaften eines Buttons ändern Java Basics - Anfänger-Themen 6
M Buttons Java Basics - Anfänger-Themen 7
N Größe von Buttons Java Basics - Anfänger-Themen 3
D MouseLister und Identifikation des Event - Buttons Java Basics - Anfänger-Themen 4
T ActionListener zu Buttons dynamisch zuordnen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben