Einen Buttonklick in Label anzeigen

Diskutiere Einen Buttonklick in Label anzeigen im Java Basics - Anfänger-Themen Forum; Bin gerade am Theoriepauken (Java ist auch eine Insel, das ist einigermaßen lesbar!) und noch ziemlich am Anfang. Damit ich nicht einschlafe...

  1. Jacl
    Jacl Mitglied
    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:
    Code (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);
                            }
                        }
                });
            }*/

    }
     
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. mihe7
    mihe7 Bekanntes Mitglied
    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:
     
  4. Jacl
    Jacl Mitglied
    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... :(
     
  5. mihe7
    mihe7 Bekanntes Mitglied
    OK, um das mal so zu belassen, deklariere einfach mal
    Code (Text):

    static int zaehler;
     
    auf Klassenebene (Test-Klasse) und nimm die Deklaration aus dem ActionListener raus.
     
  6. Jacl
    Jacl Mitglied
    Fehlermeldung habe ich jetzt keine mehr, aber die Ausgabe ist immer "0":
    Code (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...
     
  7. mihe7
    mihe7 Bekanntes Mitglied
    Code (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);
                        }
            });
       }
    }
     
     
    Jacl gefällt das.
  8. Jacl
    Jacl Mitglied
    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... :)
     
  9. Wenn du Java lernen möchtest, empfehlen wir dir dieses Online-Training hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Einen Buttonklick in Label anzeigen - Ähnliche Themen

Bei Buttonklick soll PopupMenu erscheinen
Bei Buttonklick soll PopupMenu erscheinen im Forum AWT, Swing, JavaFX & SWT
Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten
Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten im Forum Java Basics - Anfänger-Themen
Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen
Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen im Forum Allgemeine Java-Themen
Genutzte Methoden in einen Frame einbauen
Genutzte Methoden in einen Frame einbauen im Forum AWT, Swing, JavaFX & SWT
Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty)
Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) im Forum Allgemeine Java-Themen
Thema: Einen Buttonklick in Label anzeigen