Listener für Button - Wert von Variablen verändern

Hi, ich benötige Hilfe bei einem Programm das ich für meine Firma schreiben muss. Ich habe 3 JTextFields und will den Inhalt von diesen bei einem Klick auf den Button in 3 verschiedene Variablen gespeichert wird. Ich hoffe es ist alles gut kommentiert und verständlich.
Ich habe schon einiges versucht aber ich komme nicht weiter. Wäre super wenn jmd von euch mir weiterhelfen könnte. :)

Java:
package main;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main {
     public static void main( String args[] )  {
           
            JFrame mainFrame = new JFrame(); //Hauptfenster
            mainFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            mainFrame.setSize ( 400, 400 );
           
          
            //JPanel (kleines Fenster im Frame)
            JPanel JPanel1 = new JPanel();

           
                   
            //Label
            JLabel umkreis1 = new JLabel("Umkreissuche:");
            //Textfeld für Benutzereingabe
            JTextField umkreis2 = new JTextField("100000");
           
            JLabel stadt1 = new JLabel("Stadt");
            JTextField stadt2 = new JTextField("Stadt bitte eingeben.");
           
            JLabel umsatz1 = new JLabel("Umsatz");
            JTextField umsatz2 = new JTextField("Umsatz bitte eingeben.");   
           
            //Button
            JButton button1 = new JButton("Kunden anzeigen");
           
            //Listener               
            //Wie funktioniert das mit dem Listener?
                String umkreis = umkreis2.getText();
                String stadt = stadt2.getText();   
                String umsatz = umsatz2.getText();
               
                //Das soll erst nach Button Klick passieren
                System.out.println(umkreis);
                System.out.println(stadt);
                System.out.println(umsatz);
               
            //Elemente JPanel hinzufügen
            JPanel1.add(umkreis1);
            JPanel1.add(umkreis2);
            JPanel1.add(stadt1);
            JPanel1.add(stadt2);
            JPanel1.add(umsatz1);
            JPanel1.add(umsatz2);
            JPanel1.add(button1);
               
            mainFrame.add(JPanel1);
           
            //Elemente sichtbar machen
            mainFrame.setVisible( true ); 
            JPanel1.setVisible(true); 
           
            //Positionen ändern
            mainFrame.setLayout(null);
            JPanel1.setLayout(null);

            umkreis1.setLocation(20, 20); //(x, y)
            umkreis2.setLocation(20, 40);
           
            stadt1.setLocation(20, 70);
            stadt2.setLocation(20, 90);
           
            umsatz1.setLocation(20, 120);
            umsatz2.setLocation(20, 140);
           
            button1.setLocation(20, 190);
            
           
               
            }
}
 

JStein52

Top Contributor
z.B. so:

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
..
..
..
        button.addActionListener(new ActionListener() {
          
            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                // hier hin schreibst du den Code der beim Button-Click ausgeführt werden soll
            }
        });
 
Okay dankeschön, funktioniert soweit. Ich habe ein weiteres Problem: Was mach ich wenn $umsatz und $umkreis entweder leer sind oder den Wert als Double statt Int aufweisen? Ist es möglich das man einen Fehler (Joptionpane?) ausgibt sobald in diesen Feldern ein Text steht und bei einer Int oder Double in der Variable $intumsatz oder $intumkreis zu speichern? Was mache ich wenn bei $stadt eine Zahl angegeben wird wenn in diesem Feld nur Text stehen darf?

Also kurz
Ich habe 3 Textfelder,

davon sind 2 die nur Int oder Double enthalten dürfen
und 1 welches nur Text enthalten darf

Wenn die Bedingungen nicht zu treffen dann soll eine Error nachricht ausgegeben werden und die Werte werden nicht in der Variable gespeichert. Sind die Bedingungen erfüllt so soll der Inhalt in den entsprechenden Variablen gespeichert werden.

Wie gebe ich bei einem Error die Nachricht in einem JOptionPane aus?

Hier nun der abgeänderte Code:
Java:
package de.Otec.de;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main {
     public static void main( String args[] )  {
       
            JFrame mainFrame = new JFrame(); //Hauptfenster
            mainFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            mainFrame.setSize ( 400, 400 );
       
      
            //JPanel (kleines Fenster im Frame)
            JPanel JPanel1 = new JPanel();

       
               
            //Label
            JLabel umkreis1 = new JLabel("Umkreissuche:");
            //Textfeld für Benutzereingabe
            JTextField umkreis2 = new JTextField("");
       
            JLabel stadt1 = new JLabel("Stadt");
            JTextField stadt2 = new JTextField("");
       
            JLabel umsatz1 = new JLabel("Umsatz");
            JTextField umsatz2 = new JTextField("");
       
            //Button
            JButton button1 = new JButton("Kunden anzeigen");
           
            //Elemente JPanel hinzufügen
            JPanel1.add(umkreis1);
            JPanel1.add(umkreis2);
            JPanel1.add(stadt1);
            JPanel1.add(stadt2);
            JPanel1.add(umsatz1);
            JPanel1.add(umsatz2);
            JPanel1.add(button1);
           
            mainFrame.add(JPanel1);
       
            //Elemente sichtbar machen
            mainFrame.setVisible( true );
            JPanel1.setVisible(true);
       
            //Positionen ändern
            mainFrame.setLayout(null);
            JPanel1.setLayout(null);

            umkreis1.setLocation(20, 20); //(x, y)
            umkreis2.setLocation(20, 40);
            umkreis2.setSize(30, 30);
       
            stadt1.setLocation(20, 70);
            stadt2.setLocation(20, 90);
            stadt2.setSize(30, 30);
       
            umsatz1.setLocation(20, 120);
            umsatz2.setLocation(20, 140);
            umsatz2.setSize(30, 30);
       
            button1.setLocation(20, 190);
        
            button1.addActionListener(new ActionListener() {
            
                @Override
                public void actionPerformed(ActionEvent arg0) {
                
                    //Werte in Variablen speichern und in Integer(Ganzahlig)! umwandeln
                    String $umkreis = umkreis2.getText();
                     int $intumkreis = Integer.parseInt($umkreis);
                
                    String $stadt = stadt2.getText();
                
                    String $umsatz = umsatz2.getText();
                    int $intumsatz = Integer.parseInt($umsatz);
                
                    System.out.println("Umkreis: " + $intumkreis  +  " Stadt: "  + $stadt + " Umsatz: " + $intumsatz);
                
                
                
                
                    /* Finale Werte zum Abgleichen (sollen mit einer Datenbank später abgeglichen werden)
                    $intumkreis;
                    $stadt;
                    $intumsatz;*/
                
                
                
                
                
                
                }
            
            
            });
               //Zum Abgleich mit der Datenbank
            }
}

Und nochmals Dankeschön für die super Antwort in so kurzer Zeit :)
 

JStein52

Top Contributor
Die schönste Lösung für dein Problem mit den erlaubten Zeichen in den Textfeldern wäre ein JFormattedTextField das die Eingaben gleich validiert. Da musst du dir halt eine passenden regular expression zusammenbasteln die die gültigen Eingaben beschreibt, z.B. nach folgendem Beispiel:
Code:
        java.util.regex.Pattern samplerateLength = java.util.regex.Pattern.compile("[0-9]*\\.?[0-9]{0,3}");
        sampleRateVonText = new JFormattedTextField(new RegexPatternFormatter(samplerateLength));
wobei RegexPatternFormatter eine selber gebastelte Formatter-Klasse ist. Schau dir mal die Beschreibung von JFormattedTextField an.
Ansonsten kannst du natürlich erst mal die Eingabe zulassen und nach dem getText() validieren und mit einer entsprechenden JOptionPane reagieren.
 
Okay danke werde ich morgen gleich ausprobieren - noch eine andere Frage. Ich gebe z.B. die Stadt Berlin an und will im Umkreis von z.B. 30km überprüfen ob eine bestimme Adresse in diesem Bereich liegt. (Gibt's ne Möglichkeit mit Google maps?) Oder soll ich für diese Frage ein neues Thema erstellen?

Übrigens sehr cool das du immer so schnell antwortest
 

JStein52

Top Contributor
Das Beispiel da oben lässt nur Dezimalzahlen mit . (Punkt) getrennt und max. 3 Stellen nach dem Punkt zu. Wenn du Buchstaben oder z.B. 4 Stellen angeben willst piepts gleich bei der Eingabe.

Edit: diese FormatterKlasse und ein komplettes Beispiel kann ich dir morgen auch schicken wenn du willst.
 

JStein52

Top Contributor
Ich gebe z.B. die Stadt Berlin an und will im Umkreis von z.B. 30km überprüfen ob eine bestimme Adresse in diesem Bereich liegt. (Gibt's ne Möglichkeit mit Google maps?) Oder soll ich für diese Frage ein neues Thema erstellen?
Neues Thema ist sicher besser. Muss ich morgen aber mal nachgucken. Ich habe gerade einiges mit Google Maps gemacht. Willst du das dann in deiner Oberfläche auch grafisch darstellen ?
 
Neues Thema ist sicher besser. Muss ich morgen aber mal nachgucken. Ich habe gerade einiges mit Google Maps gemacht. Willst du das dann in deiner Oberfläche auch grafisch darstellen ?
Grafisch wäre cool - aber erstmal optional. Wichtig ist das eine Liste angezeigt wird mit den Adressen in diesem Umkreis (Adressen von Kunden). Wäre cool wenn du sowohl ein Beispiel mit und ohne grafischer Oberfläche hast.


Ja und bezüglich dem Post davor, kannst mir gerne morgen schicken.

Super :)
 

JStein52

Top Contributor
Ich vermute mal dass das Vorgehen so sein muss:
- du lässt dir von Google die GPS-Koordinaten deiner gewünschten Adresse geben und errechnest damit die Entfernung von deinem Bezugspunkt den du ebenfalls in Form von GPS-Koordinaten hast. (Berlin ist da vermutlich schlecht denn das hat ja alleine schon einen Durchmesser von 20-30 km oder ?)
 
Ja aber es kann ja auch sein das ein Händler innerhalb eines Berliner Stadtbezirks wohnt - also von Der Stadt bzw sagen wir Startadresse soll der Umkreis alle Adressen anzeigen die sich dort im Umkreis befinden
 

JStein52

Top Contributor
ich habe z.B. eine Java-Klasse die zu einer Adresse (String in der Form Strasse, Hausnummer, PLZ, Ort) von Google die GPS-Koordinaten abfragt. Wenn du jetzt als Adresse einmal eure Firma und einmal den Kunden angibst hast du beide Koordinaten und die sollte man doch mit ein bisschen Mathematik in eine Entfernung umrechnen können
 

JStein52

Top Contributor
sagen wir Startadresse soll der Umkreis alle Adressen anzeigen die sich dort im Umkreis befinden
Ja das sollte gehen indem du mit der Startadresse als einem Punkt eine Schleife über alle gesuchten Adressen machst und die raussuchst deren Abstand kleiner dem gewünschten ist. Aber Achtung: bei Google darfst du max. 2500 Adressanfragen pro Tag durchführen (kostenlos, darüberhinaus kostet es Geld)
 

JStein52

Top Contributor
Ich habe bei Google zwar keine Distanzberechnung (als Luftlinie) gefunden ist aber einfach:

....
stellen auf der Karte die Längen- und Breitenkreise gerade Linien dar und verlaufen parallel beziehungsweise rechtwinklig zueinander. Man kann daher zur Entfernungsbestimmung für dieses relativ kleine Gebiet einfach die Erdoberfläche als Ebene ansehen und zum Satz des Pythagoras greifen:

distance = sqrt(dx * dx + dy * dy)

mit distance: Entfernung in km
dx = 71.5 * (lon1 - lon2)
dy = 111.3 * (lat1 - lat2)
lat1, lat2, lon1, lon2: Breite, Länge in Grad


Wenn man Länge und Breite in Grad angibt, ergibt sich die Entfernung in Kilometern. Die Konstante 111.3 ist dabei der Abstand zwischen zwei Breitenkreisen in km und 71.5 der durchschnittliche Abstand zwischen zwei Längenkreisen in unseren Breiten.

PS: Google bietet eine Wegberechnung mit einer Wegstrecke in km, falls du das gemeint hast. Ich weiss aber nicht ob du Luftlinie oder Weg brauchst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
B externer Listener für Zeichenbereich? Java Basics - Anfänger-Themen 2
G Listener für JPanel für Statusmeldungen Java Basics - Anfänger-Themen 3
F Listener für Variable Java Basics - Anfänger-Themen 29
N Listener für datei Java Basics - Anfänger-Themen 13
G listener für radiobutton Java Basics - Anfänger-Themen 1
E Listener für jedes Objekt Java Basics - Anfänger-Themen 4
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
J Action Listener Java Basics - Anfänger-Themen 2
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
S Action Listener Java Basics - Anfänger-Themen 6
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
Developer_X Mouse MOTION listener example Java Basics - Anfänger-Themen 5
J Mouse-Listener Java Basics - Anfänger-Themen 3
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
StickToFreak Applet -> GameLoop + Listener / Listener funktioniert nicht Java Basics - Anfänger-Themen 22
D dialog listener? Java Basics - Anfänger-Themen 2
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
C Listener und Events Java Basics - Anfänger-Themen 10
E Listener Java Basics - Anfänger-Themen 2
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
D Kombinationsfeld => Realisierung im Listener? Java Basics - Anfänger-Themen 2
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
D Listener bzw. Interfaces Java Basics - Anfänger-Themen 7
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Window Listener? Java Basics - Anfänger-Themen 2
G 2 Listener wiedersprechen sich. Java Basics - Anfänger-Themen 12
A Gibt es standardmässig in Java einen Verzeichnis-Listener? Java Basics - Anfänger-Themen 6
S Mit Listener AWT Objekte ansprechen Java Basics - Anfänger-Themen 2
G Listener Java Basics - Anfänger-Themen 5
G Listener Problem Java Basics - Anfänger-Themen 3
B Wiso funktioniet das nicht? (Listener) Java Basics - Anfänger-Themen 6
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
D Listener? Java Basics - Anfänger-Themen 2
S Listener auf JTextfeld Java Basics - Anfänger-Themen 8
B Kommunikation zwischen Klasse und Listener Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben