Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden)

Diskutiere Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) im AWT, Swing, JavaFX & SWT Bereich.
Zrebna

Zrebna

Hallo!

Ich baue gerade ein simples RNG-Tool.
Die Idee ist, dass ein User einen Bereich eingeben darf (2 Zahlen) und bei jedem Klick auf einen Button 'Generate' in einem Labelfeld eine Zufallszahl angezeigt wird.
Das funktioniert soweit, nur leider wird nach jedem erneutem Buttonklick der vorherige Wert/Zahl nicht gelöscht und ich weiß nicht, wie ich es lösen soll, so dass die neue Zahl die vorherige(n) Zahle(n) einfach überdeckt - siehe Bild.

Hier der relevant Codesnippet:
Java:
  // EventHandling
        generateButton.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                Random random = new Random();
                String lowString = minInput.getText();
                int low = Integer.parseInt(lowString);
                String highString = maxInput.getText();
                int high = Integer.parseInt(highString);
                high = high +1;

                int randomNumber = random.nextInt(high - low) + low;
                String randomNumberString = Integer.toString(randomNumber);
                System.out.println(randomNumber);

                Label randomNumberLabel = new Label("");
                randomNumberLabel.setText(randomNumberString);
                root.add(randomNumberLabel, 2,2);
            }
        });
Evtl. irgendwie das gesamte Event in eine Schleife, die solange läuft, wie ein User eben weiter auf den Button klickt und vorherige Values löscht?
Aber wo und wie? Oder geht das ganz anders?

Für Input bin ich, wie immer dankbar:)


rng_overlapping.PNG
 
L

LimDul

Du erzeugst in deinem Handler jedes mal ein neues Label und fügst das hinzu.

Die korrekte Variante ist - außerhalb des Handlers, wo auch die Textfelder erzeugt werden - das Label erzeugen. Und dann im Eventhandler nur noch den Text des Labels ändern.
 
Zrebna

Zrebna

Jup, das wars - ist mir gerade aufgefallen undd ich wollte noch schnell den Thread löschen, aber du bist schneller gewesen - Jedenfalls danke für die schnelle Hilfe:)

Ein eventHandler ist quasi ein local Scope und nachdem dieser verlassen wird, wirder Wert von allen Variablen zerstört (hier z.B. der Wert des Labels) und es wird der Ursprungswert wieder angenommen (also, als das Element erstell wurde)?
Bzw., wo geht das Programm nach dem EventHandler weiter?
 
Zuletzt bearbeitet:
Thema: 

Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben