Zeitversetzes erzeugen von JLabel

Status
Nicht offen für weitere Antworten.
A

Alex Lorenz

Gast
Hallo zusammen.. ich hätte mal eine knifflige Frage..

Ich möchte eine Art "Play"-Funktion basteln,
die alle 3 Sekunden mir ein neues JLABEL erstellt.
Jedoch kann ich keine Änderung zur Laufzeit sehen..
nachdem ich Play gedrückt habe muss ich 15sekunden warten, dann sind
alle Jlabels(Rote Kreise) gleichzeitig da.

Code:
int l = 0;

do{
   Thread.sleep(3000);

   //Erstellung des Jlabels

     button[l] = new JLabel();
     Hintergrund.add(button[l]);
     button[l].setBounds(coordX, coordY , 49, 49);
     button[l].setIcon(new ImageIcon(getClass().getClassLoader().getResource(roterKreis.gif)));

     button[l].repaint();
     Hintergrund.repaint();
 l++
coordY = coordY + 50;
coordX = coordY + 25;
}
while (l >5);


Auf das Repaint reagiert er nicht, bzw. zeigt keine Wirkung
Wie kann ich die Kreise nacheinander erscheinen lassen?


Vielen Dank im Voraus für die Hilfe
 
B

Beni

Gast
Und vorallem: benutz einen neuen Thread um die Labels hinzuzufügen.

Code:
Thread thread = new Thread(){
  public void run(){
     while( ... ){ ... }
  }
};

thread.start();
 
A

Alex Lorenz

Gast
mit validate() ändert sich auch nix.

also hab jetzt repaint & validate drinne sowohl für die buttons und den hintergrund..


auf den neuen thread habe verzichtet, da ich mich da noch nicht so auskenne.. oder trägt dieser dann maßgeblich zur lösung bei..

ich habe das gefühl, dass meine oberfläche erst gezeichnet wird, wenn der actionhandler durchgelaufen ist.

aber danke für die ersten schnellen antworten!

:)
 
B

Beni

Gast
Alex Lorenz hat gesagt.:
oder trägt dieser dann maßgeblich zur lösung bei..
Ja... :roll: :lol:

Ein Thread ist wie eine Ameise. Der Arbeitet irgendwo in deinem Programm, allerdings nur gerade an einer Stelle. Entweder liest er gerade eine Datei oder berechnet den Sinus von Pi, niemals kann er zwei Dinge gleichzeitig machen.

Das Zeichnen der Oberfläche, und der Aufruf des ActionListeners wird von dem EventDispatcher gemacht, der auch nur ein einzelner Thread ist. Mit anderen Worten: solange du in der "actionPerformed" was machst, wird dein Programm mit 100% Garantie nicht gezeichnet... (und deshalb benötigst du einen zweiten Thread).
 

L-ectron-X

Gesperrter Benutzer
So, hier mal ne kleine Spielerei, die das demonstriert.
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyFrame extends JFrame {
  private JPanel iconPanel, buttonPanel;
  private JButton button;
  private IconDraw iconDraw;
  private int numberOfIcons = 10;

  public MyFrame(String title) {
    super(title);
    setSize(600, 400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    iconDraw = new IconDraw(this, numberOfIcons);
    
    iconPanel = new JPanel(new GridLayout(0, numberOfIcons));
    
    buttonPanel = new JPanel();
    button = new JButton("Play");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Play")) {
          createThread();
            
          if(iconPanel.getComponentCount() > 0) {
            iconPanel.removeAll();
            iconPanel.repaint();
          }
            
          iconDraw.start();
          button.setText("Stop");
        }
        else if(e.getActionCommand().equals("Stop")) {
          iconDraw.interrupt();
          ready();
        }
      }
    });
    
    buttonPanel.add(button);
    
    this.add(iconPanel, BorderLayout.CENTER);
    this.add(buttonPanel, BorderLayout.SOUTH);
  }
  
  public void addLabel() {
    MyLabel label = new MyLabel();
    iconPanel.add(label);
    iconPanel.validate();
  }
  
  private void createThread() {
    if(iconDraw == null)
      iconDraw = new IconDraw(this, numberOfIcons);
  }
  
  public void ready() {
    iconDraw = null;
    button.setText("Play");
  }
  
  class MyLabel extends JLabel {
    int iconSize = 20;
    public void paintComponent(Graphics g) {
      g.setColor(Color.RED);
      g.fillOval((int)(this.getSize().getWidth()-iconSize)/2,
        (int)(this.getSize().getHeight()-iconSize)/2, iconSize, iconSize);
    }
  }
  
  public static void main(String[] args) {
    new MyFrame("Punkte").setVisible(true);
  }
}
Code:
public class IconDraw extends Thread {
  private int counter;
  private MyFrame starter;

  public IconDraw(MyFrame starter, int counter) {
    this.starter = starter;
    this.counter = counter;
  }

  public void run() {
    while(!isInterrupted()) {
      for(int i = 0; i < counter; i++) {
        try {
          Thread.sleep(1000);
          starter.addLabel();
        }
        catch(InterruptedException e) {
          interrupt();
        }
      }
      interrupt();
      starter.ready();
    }
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I TIFF im CMYK-Farbmodell + mit dpi-Auflösung im Header erzeugen - wie? AWT, Swing, JavaFX & SWT 0
Monokuma Blöcke erzeugen (JavaFX) AWT, Swing, JavaFX & SWT 1
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
I Schöne Heatmap erzeugen AWT, Swing, JavaFX & SWT 10
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
B JavaFX Wie Treeview aus xml erzeugen AWT, Swing, JavaFX & SWT 11
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
K JavaFX Erzeugen dynamischer Layouts in fxml AWT, Swing, JavaFX & SWT 3
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
B Knoten, Kanten erzeugen AWT, Swing, JavaFX & SWT 4
H Quadrate dnamisch erzeugen und beliebig füllen AWT, Swing, JavaFX & SWT 7
P TableViewerColumn dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
H Swing Button Klick soll "Untermenü-Buttons" erzeugen AWT, Swing, JavaFX & SWT 2
B Kontrast in einem Bild erzeugen AWT, Swing, JavaFX & SWT 37
J Halb-modales Fenster erzeugen AWT, Swing, JavaFX & SWT 5
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
C SWT - widget dynamisch erzeugen und anzeigen AWT, Swing, JavaFX & SWT 10
M jTable - Größe beim Erzeugen AWT, Swing, JavaFX & SWT 4
B eine .jar erzeugen AWT, Swing, JavaFX & SWT 4
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
S Bild fläche erzeugen AWT, Swing, JavaFX & SWT 10
G Große dynamische ContextMenus erzeugen (Eclipse RCP) AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
T Leerraum im Jframe erzeugen AWT, Swing, JavaFX & SWT 3
E Profilsichten speichern und dynamsich erzeugen?! AWT, Swing, JavaFX & SWT 2
G Mit Java einen Button wie z.B. im Opera 10.63 erzeugen AWT, Swing, JavaFX & SWT 3
R Möglichkeiten ein abgeleitetes Objekt zu erzeugen AWT, Swing, JavaFX & SWT 4
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
M Jframe wie bekommt man bei den zeile einen header erzeugen AWT, Swing, JavaFX & SWT 2
X Swing Neues Fenster erzeugen AWT, Swing, JavaFX & SWT 3
E AWT RenderedImage aus BufferedImage erzeugen, um Bild abzuspeichern? AWT, Swing, JavaFX & SWT 4
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
M Swing Zweidimensionales Array mit Farben erzeugen AWT, Swing, JavaFX & SWT 16
H Swing Trennlinie wie bei Menüleiste erzeugen AWT, Swing, JavaFX & SWT 2
Semox Swing JFrame extern erzeugen und in anderes JFrame einbetten AWT, Swing, JavaFX & SWT 7
D Dynamischen JTree aus Hyperlinks bzw. Anker erzeugen AWT, Swing, JavaFX & SWT 8
G ActionEvents selbst erzeugen AWT, Swing, JavaFX & SWT 7
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
I Swing JTree aus ArrayList<File> erzeugen AWT, Swing, JavaFX & SWT 15
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
J Swing Selbstschliessende Nachrichtenfenster erzeugen AWT, Swing, JavaFX & SWT 8
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
B Wie kann ich Greyscale Bilder aus ushort binary files erzeugen? AWT, Swing, JavaFX & SWT 8
multiholle Swing TransferHandler mit DataFlavor erzeugen AWT, Swing, JavaFX & SWT 2
H Swing jpanel in jframe erzeugen und anzeigen AWT, Swing, JavaFX & SWT 5
freakysheep mit jtree config file erzeugen AWT, Swing, JavaFX & SWT 2
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
S JTable Daten bearbeiten und Grauwertbild erzeugen! AWT, Swing, JavaFX & SWT 4
S Nachträglich Swing-Elemente in JFrame erzeugen AWT, Swing, JavaFX & SWT 18
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
M Erzeugen von Komponenten während der Laufzeit AWT, Swing, JavaFX & SWT 6
G Felder dynamisch erzeugen! AWT, Swing, JavaFX & SWT 3
I Textfields dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
J JFrame in Fenstermitte erzeugen AWT, Swing, JavaFX & SWT 16
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
A Grafik aus MIME-kodiertem Inhalt erzeugen AWT, Swing, JavaFX & SWT 2
G Datei-Browser - Wie solche Ansicht erzeugen? AWT, Swing, JavaFX & SWT 3
R Nicht rechteckige Komponenten erzeugen? AWT, Swing, JavaFX & SWT 7
K Erzeugen eines Jar-Files AWT, Swing, JavaFX & SWT 5
vogella Erzeugen der Hauptsicht (JFrame) AWT, Swing, JavaFX & SWT 2
M Aus Swing Oberfläche Bild erzeugen AWT, Swing, JavaFX & SWT 39
L Dynamisches Erzeugen eines Button AWT, Swing, JavaFX & SWT 2
M Abstrakte Graphics Klasse erzeugen AWT, Swing, JavaFX & SWT 2
F Komponente dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
J Thread erzeugen AWT, Swing, JavaFX & SWT 9
M dynamischen JTree erzeugen AWT, Swing, JavaFX & SWT 4
S In einem button Panel 2 verschiedene TiteledBoarder erzeugen AWT, Swing, JavaFX & SWT 5
M ImageObserver, Bild dynamisch erzeugen und Speichern AWT, Swing, JavaFX & SWT 24
L Tabelle mit 5 spalten und 2 Zeilen erzeugen AWT, Swing, JavaFX & SWT 4
B Objekt in "actionPerformed" erzeugen und nutzen AWT, Swing, JavaFX & SWT 3
B JFrame aktualisieren ohne es neu zu erzeugen AWT, Swing, JavaFX & SWT 1
G JRadioButton dynamisch erzeugen AWT, Swing, JavaFX & SWT 6
H Textfelder erzeugen AWT, Swing, JavaFX & SWT 2
J Mehrreihige JTabbedPane erzeugen AWT, Swing, JavaFX & SWT 6
G Grafik erzeugen: eine Art Zustandsgraph eines Automaten AWT, Swing, JavaFX & SWT 7
G Action Listener erzeugen AWT, Swing, JavaFX & SWT 6
S Mehrere Buttons in einer Schleife erzeugen . AWT, Swing, JavaFX & SWT 3
M Prob. beim dynamischen Erzeugen v. Obj! AWT, Swing, JavaFX & SWT 11
M "einfaches Grafikobjekt erzeugen" AWT, Swing, JavaFX & SWT 8
G Non-Modal JFileChooser erzeugen AWT, Swing, JavaFX & SWT 10
H JComboBoxen dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
M Zusätzlichen Maus-Klick erzeugen AWT, Swing, JavaFX & SWT 4
K toolbar dynamisch erzeugen AWT, Swing, JavaFX & SWT 2
H Statusbar erzeugen AWT, Swing, JavaFX & SWT 2
@ Erzeugen einer Maske zum drucken AWT, Swing, JavaFX & SWT 2
G JTable mit Vektor-Konstruktor erzeugen?! AWT, Swing, JavaFX & SWT 3
S Panel (Frame) erzeugen AWT, Swing, JavaFX & SWT 5
H große mengen an jbuttons dynamisch erzeugen? AWT, Swing, JavaFX & SWT 15
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C Swing Übergabe von String an JLabel AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen


Oben