Einen Buttonklick in Label anzeigen

Bitte aktiviere JavaScript!
Bin gerade am Theoriepauken (Java ist auch eine Insel, das ist einigermaßen lesbar!) und noch ziemlich am Anfang. Damit ich nicht einschlafe probiere ich herum und habe folgendes Problem.
Ich komme leider nicht weiter - ich weiß "die Grundlagen", aber so kann ich mich für's weiterlesen motivieren... :)
Es geht um einen Buttonklick welcher in einem Label angezeigt werden soll (eine Variable soll pro Klick um 1 erhöht werden).
Etliche Anweisungen schon bei der Fenstererstellung sind völlig unnötig, die sind beim herumexperimentieren entstanden (ich wollte nur auf die schnelle eine Fensterausgabe und habe es von vorhergehenden Experimenten übernommen)!
Hier mein Codeschnipsel mit meinen auskommentierten Versuchen (jeder hat mal angefangen, oder?): :rolleyes:
Java:
public class Test {
    public static void main(String[] args) throws Exception {
        //Fenster
        JFrame frame = new JFrame();
        frame.setTitle("Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 500);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        //Button
        JButton Klicks = new JButton("Zähle");
        size = Klicks.getPreferredSize();
        Klicks.setBounds(600 + insets.left, 300 + insets.top,size.width, size.height);
        frame.getContentPane().add(Klicks);
        //Text
        JLabel Klicksanzeige = new JLabel("Klicks bisher");
        size = Klicksanzeige.getPreferredSize();
        Klicksabzeige.setBounds(560 + insets.left, 275 + insets.top,size.width, size.height);
        frame.getContentPane().add(Klicksanzeige);
        //Fenster und Inhalt anzeigen
        frame.setVisible(true);#

        //So gehts nicht, innerhalb von Main(), wo Variable hinschreiben!       
        /*Klicks.addActionListener(new ActionListener() {
                    int zaehler = 0;
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        zaehl = zaehl++;
                        Klicksanzeige.getText("Klicks bisher: " + zaehler);
                    }
            });*/
        }
        //so geht's auch nicht, ausserhalb von Main()!
        /*int zaehler = 0;
        public static void ButtonHandling(JButton Klicks, JLabel Klicksanzeige){
            Klicks.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if(e.getSource() == Klicks){ 
                                zaehler = zaehler++;
                                Klicksanzeige.getText("Klicks bisher: " + zaehler);
                        } 
                    }
            });
        }*/
}
 
A

Anzeige




Vielleicht hilft dir unser Java-Tutorial hier weiter —> (hier klicken)
Bitte halte Dich wenigstens an die Java-Konventionen zur Schreibweise von Bezeichnern: Variablen, Methoden und Parameter in lowerCamelCase, Typen in UpperCamelCase.

Um aus der anonymen inneren Klasse auf eine Variable in der Methode zugreifen zu können, muss die Variable final deklariert werden. Daher funktioniert das mit einem einfachen int nicht. Wenn Du unbedingt eine Variable aus Deiner main-Methode nutzen willst, könntest Du ein Array oder ein anderes Objekt, wie z. B. AtomicInteger verwenden.

Ansonsten gilt, was ich Dir hier schon geschrieben habe:
Außerhalb der Methode. Eine lokale Variable existiert nur so lange die Methode läuft.
 
ja, weiß ich eh noch - aber irgendwie begreife ich's (noch) nicht. Normalerweise finde ich immer eine Lösung (meistens keine "herzeigbare") die funktioniert (so recht und schlecht) und die Motivation ist wieder da. Aber bei diesem Problem habe ich anscheinend meine aktuelle "Logiggrenze" erreicht... :(
 
OK, um das mal so zu belassen, deklariere einfach mal
Code:
static int zaehler;
auf Klassenebene (Test-Klasse) und nimm die Deklaration aus dem ActionListener raus.
 
Fehlermeldung habe ich jetzt keine mehr, aber die Ausgabe ist immer "0":
Java:
klicks.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        zaehler = zaehler++;
                        System.out.println(zaehler);
                        //klicksanzeige.getText("Klicks bisher: " zaehler); hier wird Fehlermeldung angezeigt
                    }
            });
Und auf's Label gibts gar keine Ausgabe da Fehlermeldung...
 
Java:
import java.awt.event.*;
import javax.swing.*;

public class Test {

    static int zaehler;

    public static void main(String[] args) throws Exception {
        //Fenster
        JFrame frame = new JFrame();
        frame.setTitle("Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 500);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        //Button
        JButton Klicks = new JButton("Zähle");
        Klicks.setBounds(600, 300, 50, 20);
        frame.getContentPane().add(Klicks);
        //Text
        JLabel Klicksanzeige = new JLabel("Klicks bisher");
        Klicksanzeige.setBounds(560, 275,100,20);
        frame.getContentPane().add(Klicksanzeige);
        //Fenster und Inhalt anzeigen
        frame.setVisible(true);

        Klicks.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        zaehler++;
                        Klicksanzeige.setText("Klicks bisher: " + zaehler);
                    }
        });
   }
}
 
Yes, vielen Dank - jetzt funktionierts. Und natürlich setText mit getText verwechselt. Bin heute schon zu lange am lesen und probieren (den ganzen Tag schon)...
muchas gracias... :)
 
A

Anzeige




Hier lernst du alle wichtigen Java-Grundlagen.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben