JFrame aktualisieren?

1 Antwort

1) Pack

frame.setVisible(true);

hinter deinen letzten add-Aufruf.

2) Hier:

newActionListener

fehlt ein Leerzeichen hinter new.

3) Du aktualisierst im ActionListener doch eh nichts, was mit der grafischen Oberfläche in Verbindung steht?


Junski1 
Fragesteller
 30.01.2022, 18:23

funktioniert leider immer noch nicht. Die Oberfläche wird nicht aktualisiert.

0
regex9  30.01.2022, 18:28
@Junski1

Du arbeitest offenbar mit zwei verschiedenen Frame-Objekten (frame und PokeballFrame). Du solltest dich wohl für Ersteres entscheiden.

0
Junski1 
Fragesteller
 30.01.2022, 19:39
@regex9

Ich benutze eigentlich nur eins hatte aber einmal die Variablen klassischer dargestellt damit man es besser identifizieren kann.

0
regex9  30.01.2022, 20:37
@Junski1

Also sind alle Variablen mit dem Präfix Pokeball eigentlich dieselben Variablen, wie die ohne diesen Präfix. Das hättest du früher erwähnen sollen.

Ein komplettes funktionales Beispiel:

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

public class Main {
  private int counter = 1;

  public void showFrame() {
    JFrame frame = new JFrame("Example");
    GridLayout gridLayout = new GridLayout(2, 1);
    frame.setLayout(gridLayout);
    frame.setSize(100, 100);

    JLabel counterDisplay = new JLabel(Integer.toString(counter));
    JButton moreButton = new JButton("<html><h1>^<html>");
    moreButton.addActionListener(event -> {
      ++counter;
      counterDisplay.setText(Integer.toString(counter));
    });
    frame.add(moreButton);
    frame.add(counterDisplay);

    frame.setVisible(true);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
      new Main().showFrame();
    });
  }
}
  • Das GridLayout braucht mindestens eine Zeile. Ich habe ihm hier zwei gegeben.
  • Ein repaint-Aufruf ist nicht nötig. Der Frame muss auf dem Event Dispatch Thread erstellt werden (dafür sorgt invokeLater), dann kann der ActionListener den Zustand des Labels auch sicher ändern.
0
Junski1 
Fragesteller
 30.01.2022, 21:18
@regex9

Super hat Funktioniert vielen Dank

0