Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

1

04.07.2010, 17:21

JPanel blinken lassen!

Moin!

Ich will ein JPanel kurz einmal aufblinken lassen. Wollte das ganze so lößen, dass ich erst ne Blinkfarbe setze dann 500ms warte und anschließend wieder die Orginalfarbe setze.
Aber es funktioniert nicht weiß nicht warum. Die Blinkfarbe scheint komplett ignoriert zu werden, auch bei höheren Zeit werten wie 5000ms funktioniert es nicht.

Hier der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void GruenBlink()
    {
        GruenerKnopf.setBackground(GruenBlink);
        try
        {
            //do what you want to do before sleeping
            Thread.currentThread().sleep(1000);//sleep for 1000 ms
            //do what you want to do after sleeptig
        }
        catch(InterruptedException ie)
        {
            //If this thread was intrrupted by nother thread
        }
        GruenerKnopf.setBackground(Gruen);
    }

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

04.07.2010, 17:47

hast du einen eigenen thread der dafür zuständig ist? wenn nicht schläft vielleicht der thread der alles zeichnet und du siehst es einfach nicht.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

idontknow

unregistriert

3

04.07.2010, 17:50

Hab nix mit irgendwelchen Threads. Hab das ganze von der seite raus genommen: http://www.wer-weiss-was.de/theme35/article2306554.html

Tobiking

1x Rätselkönig

  • Private Nachricht senden

4

04.07.2010, 18:22

Es könnte daran liegen das das Panel nicht neu gezeichnet wird während die Farbe geändert ist. Das müsstest du erzwingen. Ich glaube repaint() war dazu gedacht.

foreach

Frischling

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

5

04.07.2010, 18:25

Hi

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import javax.swing.*;
import java.awt.*;

/**
 * 
 * @author foreach
 * @version 1.0
 */
public class Blinker extends JFrame
{
    private JPanel panel;
    private Color blinkFarbe;
    private Color hintergrundFarbe;

    
    public Blinker()
    {
        panel = new JPanel();
        blinkFarbe = new Color(0,0,200);
        hintergrundFarbe = new Color(0,0,0);
        panel.setBackground(hintergrundFarbe);
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.add(panel);
        this.setVisible(true);
    }

    /**
     * 
     * @param x gibt an wie oft das JPanel blinken soll
     */
    public void blinke_x_mal(int x)
    {
        for (;x>0;x--){
            panel.setBackground(blinkFarbe);
            warte(1000);
            panel.setBackground(hintergrundFarbe);
            warte(1000);

        }
    }
    
    public void warte(int millisekunden) {
        try {
            Thread.sleep(millisekunden);
        } catch (Exception e) {
            // Exception ignorieren
        }
    }
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »foreach« (04.07.2010, 18:30)


David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

idontknow

unregistriert

7

05.07.2010, 18:25

@foreach: deinen ansatz hatte ich auch nfunzt nur net, bzw net in meinem fall.

@david_pb: deins funzt auch net weil es glaube ich nur bei frames geht, aber dank dem code konnte ich ne lößung implementieren, danke :D

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

05.07.2010, 20:04


@david_pb: deins funzt auch net weil es glaube ich nur bei frames geht, aber dank dem code konnte ich ne lößung implementieren, danke :D


Wieso sollte das nich funzen? Der Flasher will eine Component Instanz, da fallen doch sämtliche Swing komponenten drunter.
@D13_Dreinig

Werbeanzeige