Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Blödes Problem mit Color!
Der folgende Code sollte die Schrift eines JButtons von Gelb langsam Rot werden lassen, nur leider Funktioniert das nicht. Der Button ist zuerst Gelb und wird erst nachdem die Schleife beendet worde ist auf knallrot gesetzt. Die Nuancen werden erst gar nicht angezeigt.
Ich habe schon alles Probiert, im selben Thread, in einem eigenem Thread, ja sogar mit yield und repaint.
for(int i=0; i<11; i++)
{
jb.setForeground(new Color(255,(int) i*25.5, 0));
jb.repaint();
Thread.yield();
try
{
Thread.sleep(10);
}catch(InterruptedException ex){}
Mfg
anda_skoa
25-06-2003, 19:31
Läuft die Schleife in einem extra Thread?
Oder blockierst du die Eventloop und wunderst dich warum sie dann nicht arbeitet ;)
Ciao,
_
Hab run() vom Interface direkt gestartet statt über den Umweg über Thread ;-)
Mfg
anda_skoa
25-06-2003, 20:47
Original geschrieben von ceisserer
Noch ne Frage: Wenn die Methoden im Thread abgerbeitet sind, beendet er sich dann von selbst?
Wenn er dann aus run() rausspringt, ja.
Ciao,
_
Noch ne andere Frage:
Haste nicht ne Klammer vergessen?
jb.setForeground(new Color(255,(int)( i*25.5), 0));
MfG Bischi
Ja, aber da hätte der Compilier eh gemotzt. Da hab ich was geändert und ohne Probieren einfach reinkopiert...
Danke für eure Hilfe!
peschmae
26-06-2003, 12:06
Original geschrieben von anda_skoa
Läuft die Schleife in einem extra Thread?
Oder blockierst du die Eventloop und wunderst dich warum sie dann nicht arbeitet ;)
das ist egal, da in Java/Swing der Eventloop immer automatisch in einem eigenenen Thread läuft
Zitat aus Thinking in Java:
It is easy to forget that you are using threads when you program with Swing. The fact that you don’t have to explicitly create a Thread object means that threading issues can catch you by surprise. Typically, when you write a Swing program, or any GUI application with a windowed display, the majority of the application is event driven, and nothing really happens until the user generates and event by clicking on a GUI component with the mouse, or striking a key. Feedback
Just remember that there is a Swing event dispatching thread, which is always there, handling all the Swing events in turn. This needs to be considered if you want to guarantee that your application won’t suffer from deadlocking or race conditions. Feedback
This section looks at a couple of issues worth noting when working with threads under Swing.
ist wohl praktisch kann aber auch probleme machen :) und anda_skoas verwirren :D - und das ist wohl einigen aufwand wert :p
MfG Peschmä
anda_skoa
26-06-2003, 15:59
Original geschrieben von peschmae
das ist egal, da in Java/Swing der Eventloop immer automatisch in einem eigenenen Thread läuft
Ok, ändert aber nichts an den Tatsachen.
Wenn du diesen Thread blockierst, kann er nichts mehr anderes machen.
ich glaube kaum, das SWING für jedes Event einen eigenen Thread startet.
ist wohl praktisch kann aber auch probleme machen :) und anda_skoas verwirren :D - und das ist wohl einigen aufwand wert :p
Der Hauptthread lebt meistens ohnehin nicht lange.
Der läuft in fast allen Java GUI Applikationen die ich kennen, mehr oder weniger nur durch main() durch.
Ihn irgendwo warten zu lassen zahlt sich nicht aus, wenn man einen zweiten Thread braucht, startet man einfach noch einen.
Ciao,
_
anda_skoa beats them all ;-)
Kennt wer eine Möglichkeit JFrames per api zu maximieren.
Hab da nämlich leider nix gefunden ;-(
Mfg
peschmae
27-06-2003, 07:26
afaik ist
frame.setSize(Toolkit.getDefaultToolkit().getScree nSize());
die einzige Möglichkeit, die erst noch nicht "richtig" maximiert
MfG Peschmä
Bis jetzt hab ich meine Fenster so maximiert, wie du es mir vorgeschlagen hast, leider hatte ich das Problem, das diese Vorgehensweise platformspezifische Sachen wie Taskbar erst gar nicht beachtet.
Es muss doch irgendeine Methode geben, die maximieren kann.....
Mfg
Wie wärs mit sowas:
frame.setSize( frame.getMaximizedBounds() )
MfG Bischi
PS: Keine Ahung obs funktioniert, musst wahrscheinlich noch das Rectangle, das getMaximizedBound zurückgibt in int umwandeln
So wies aussieht ist die Methode getMaximizedBounds nur ein Mittel um herauszufinden, ob vorher schon einmal mit setMaximizedBounds gesetzt wurde und wie groß das ist....
Ich habs probiert und ich bekomm nur null zurück, so stehts auch in den ApiDocs ("may be null")... ;-(
Schade...
Mfg
PS: Danke für deine Mühe!
anda_skoa
27-06-2003, 15:20
Hmm.
java.awt.GraphicsConfiguration getBounds() vielleicht.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.