Buttons

Status
Nicht offen für weitere Antworten.
R

Rico

Gast
Also ich habe bei mir folgendes Problem, und zwar nutze ich folgende Quelltexte für jeden Button den ich bei mir in ein Frame einbinde:

Code:
import javax.swing.*;

private JButton button1 = new JButton();

this.add(button1);
button1.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent evt) {
button1ActionPerformed(evt); } });

public void button1ActionPerformed(final ActionEvent evt) {
//Hier kommt die Ereignisprozedur des Buttons rein
}

Wenn ich den oben Quellcode oben für jeden Button nehme dann erstellt Java ür jeden Button eine Klasse. Nun habe ich in meinem Spiel insgesamt 32 Buttons und die ganzen Klassen nerven so mit der Zeit. Kann man das nicht irgendwie so machen, dass Java nicht mehr für jeden Button eine extra Klasse macht?
 

Bert Brenner

Bekanntes Mitglied
Doch natürlich. Hier ein Beispiel

Code:
public class ThreeButtons extends JFrame implements ActionListener {
  JButton button1 = new JButton();
  JButton button2 = new JButton();
  JButton button3 = new JButton();

  public ThreeButtons () {
    super ("3 Buttons");
    setLayout (new FlowLayout ());
    getContentPane().add (button1);
    getContentPane().add (button2);
    getContentPane().add (button3);
    button1.addActionListener (this);
    button2.addActionListener (this);
    button3.addActionListener (this);
  }
 
  public void actionPerformed (ActionEvent ae) {
    //Hier dann implementieren was geschehen soll
    // mit ae.getSource() kann bestimmt werden welches Objekt das ActionEvent erzeugt hat
  }
 
  public static void main (String[] args) {
    ThreeButtons tb = new ThreeButtons();
    tb.setSize (300,100);
    tb.setVisible(true);
  }
}

sollte gehen. habs jetzt aber nur so daher getippt
 
R

Rico

Gast
Dein Quellcode ist schon mal sehr nützlich, aber es ist bei mir so, dass, das ich bei mir auf dem Frame ein Null-Layout verwenden will und die Buttons an unterschiedlichen Stellen platziert habe.

Und dann noch die Frage, warum steht da bei allen Klassen "public" davor, reicht da nicht auch "privat"? Die Klasse mit den Buttons soll ja nicht von anderen Klassen verwendet werden!
 
R

Rico

Gast
Könnte mir jemand erklären wie ich das machen soll wenn ich Beispielsweise 3 Buttons habe:

Code:
public void actionPerformed (ActionEvent ae) { 
    //Hier dann implementieren was geschehen soll 
    // mit ae.getSource() kann bestimmt werden welches Objekt das ActionEvent erzeugt hat 
}

Wie wende ich "ae.getSource()" an wie schreibe ich etwas wenn der eine Button etwas ausführen soll, z.B. der eine Button soll das hier ausführen "this.setTitle("Framename");"?
 

mic_checker

Top Contributor
Kannst ja auch die "Beschriftung" holen zur Unterscheidung der Buttons, mit :

Code:
event.getActionCommand()

Da kannst du dann die einzelnen auch ganz leicht unterscheiden.
 
G

Guest

Gast
könnte das jemand ein wenig mehr verständlicher beschreiben? Ich habe halt bislang kaum Ahnung von dem graphischen Java, da ich bislang alles mit der DOS-Box gelöst habe.

Wie weise ich denn nun einem Button eine Aktion zu?

Wenn ich das mit dem Quelltext mache geht es nicht:

Code:
public void s1karte25ActionPerformed(ActionEvent evt) {
    this.setTitle("Framename");
}

da er meldet, das er nicht mit den folgenden Quelltextzeilen arbeiten kann:

Code:
public class spiel extends JFrame implements ActionListener {

Wie muss ich nun das heir anwenden: ?
Code:
event.getActionCommand()
 

Campino

Top Contributor
Code:
public void actionPerformed(ActionEvent ae){
    if(ae.getActionCommand().equals("Buttonbeschriftung")){
        //tu was...
    }
}
 
G

Guest

Gast
Das mit "equals" geht bei mir nicht, da ich keine Buttonbeschriftung habe! Statt der Buttonbeschriftung nehme ich Bilder, die jedoch immer bei dem Button varieren, da ich das so mache, das ich Buttons bei mir im Kartenspiel habe, die dann immer per Zufall mit Bildern von Karten bestückt werden. Kann man das nicht irgendwie über die Variable des Buttons statt mit der Beschriftung des Buttons lösen?
 

Campino

Top Contributor
Code:
public void actionPerformed(ActionEvent ae){
    if(ae.getSource().equals(button)){
        //tu was...
    }
}
 
G

Guest

Gast
ich habe nun wie oben beschrieben meine Buttons angelgt. Nun besteht aber ein Problem, und ich weiß nicht woran es liegt. Mein Quelltext:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class game extends Frame implements ActionListener {
  int x = 100;
  private JButton s1karte[] = new JButton[4];
  
  public game(String spielname) {

    addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent evt){
        System.exit(0);
      }
    });

    this.setTitle(spielname);
    this.setSize(800, 600);
    this.setBackground(new Color(0, 127, 0));
    this.setLayout(null);
    this.setVisible(true);
    this.setResizable(false);

    for(int i=1; i<=4; i++){
      s1karte[i].setBounds(x,50,80,110);
      x += 20;
      this.add(s1karte[i]);
      s1karte[i].addActionListener(this);
    }
  }
  
  public void actionPerformed(ActionEvent ae){
    if(ae.getSource().equals(s1karte[1])){
      //Ereignisprozedur
    }

    if(ae.getSource().equals(s1karte[2])){
      //Ereignisprozedur
    }

    if(ae.getSource().equals(s1karte[3])){
      //Ereignisprozedur
    }

    if(ae.getSource().equals(s1karte[4])){
      //Ereignisprozedur
    }
  }
  
  public static void main(String[] args) {
    new game("Kartenspiel");
  }
}

Hat jemand eine Idee, was an meinen Buttons falsch ist? Darf man überhaupt sowas mit der For-Schleife machen, wo die Objekte mit add(button) eingefügt werden?
 

mic_checker

Top Contributor
Code:
   if(ae.getSource().equals(s1karte[4])){
Arrays fangen an bei 0 zu zählen, dein Array kann 4 Elemente aufnehmen, demnach liegt s1karte[4] außerhalb der Array-Grenzen.
 
G

Guest

Gast
das Problem besteht aber immer noch, wenn ich den Index vom Array ändere:

Code:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class test extends Frame implements ActionListener { 
  int x = 100; 
  private JButton s1karte[] = new JButton[3];
  
  public test(String spielname) {

    addWindowListener(new WindowAdapter(){ 
      public void windowClosing(WindowEvent evt){ 
        System.exit(0); 
      } 
    }); 

    this.setTitle(spielname); 
    this.setSize(800, 600); 
    this.setBackground(new Color(0, 127, 0)); 
    this.setLayout(null); 
    this.setVisible(true); 
    this.setResizable(false); 

    for(int i=0; i<=3; i++){
      s1karte[i].setBounds(x,50,80,110); 
      x += 20; 
      this.add(s1karte[i]); 
      s1karte[i].addActionListener(this); 
    } 
  } 
  
  public void actionPerformed(ActionEvent ae){ 
    if(ae.getSource().equals(s1karte[0])){
      //Ereignisprozedur 
    } 

    if(ae.getSource().equals(s1karte[1])){
      //Ereignisprozedur 
    } 

    if(ae.getSource().equals(s1karte[2])){
      //Ereignisprozedur 
    } 

    if(ae.getSource().equals(s1karte[3])){
      //Ereignisprozedur 
    } 
  } 
  
  public static void main(String[] args) { 
    new test("Kartenspiel");
  } 
}

Was mache ich falsch, und wo liegt der Fehler? Könnte jemand gleich den Quelltext richtig aufschreiben?
 
G

Guest

Gast
Anonymous hat gesagt.:
Code:
  private JButton s1karte[] = new JButton[3];
Willst du nun 3 Buttons oder 4? Wenn du 4 willst dann lass die 4 hier stehen

Code:
    for(int i=0; i<=3; i++){
      s1karte[i].setBounds(x,50,80,110); 
      x += 20; 
      this.add(s1karte[i]); 
      s1karte[i].addActionListener(this); 
    } 
  }
Was mache ich falsch, und wo liegt der Fehler? Könnte jemand gleich den Quelltext richtig aufschreiben?

Du deklarierst das Feld von Buttons, aber es fehlt so was wie:

Code:
for(int i = 0;i <= 3;i++) {
s1karte[i] = new JButton("Button "+i);
...
Du musst du Buttons auch richtig initialisieren...
 

mic_checker

Top Contributor
Btw. was ich (<- Gast) noch vergessen hab :
- Klassennamen werden groß geschrieben

Warum verwendest du eigentlich das null - Layout?

Mit den Änderungen sollte zumindest keine ArrayIndexOutOfBoundsException mehr auftauchen.

Hab jetzt auch den ActionListener getestet, er erkennt so richtig welcher Button gedrückt wurde.

Aber: Das Layout sieht so noch sehr "unschön" aus
 
G

Guest

Gast
auch wenn es hier nicht in den Thread reinpasst, aber welches Laout ist dann am besten, wo man auch Bounds für Objekte setzen kann?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
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
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
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