Applet JApplet Flackern durch Repaint

vR34kSH0w

Mitglied
hey,
ich habe folgendes applet geschrieben:

Java:
import java.awt.*;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;

public class ClockApplet extends JApplet
{
	int hours;
	int millis;
	int minutes;
	int seconds;
	
	Calendar calendar;
	Timer timer;
	
	public void init()
	{
		calendar = Calendar.getInstance();
		
		hours = calendar.get(Calendar.HOUR_OF_DAY);
		millis = calendar.get(Calendar.MILLISECOND);
		minutes = calendar.get(Calendar.MINUTE);
		seconds = calendar.get(Calendar.SECOND);
		
		timer = new Timer();
		timer.scheduleAtFixedRate(new TimerTask()
		{
			public void run()
			{
				millis++;
				
				if(millis == 1000)
				{
					millis = 0;
					seconds++;
				}
				
				if(seconds == 60)
				{
					seconds = 0;
					minutes++;
				}
				
				if(minutes == 60)
				{
					minutes = 0;
					hours++;
				}
				
				if(hours == 24)
				{
					hours = 0;
				}
				
				repaint();
			}
		}, 0, 1);
		
		setSize(200, 100);
		setBackground(Color.BLACK);
	}
	
	public void paint(Graphics g)
	{
		g.setColor(Color.BLACK);
		g.fillRect(0, 0, 200, 100);
		g.setColor(Color.WHITE);
		g.drawString(hours + " : " + minutes + " : " + seconds + " : " + millis, 20, 20);
	}
}

Durch das Neuzeichnen entsteht aber nun ein "Flackern", weil die aktuelle Zeit immer wieder überzeichnet werden muss. Gegoogelt habe ich schon, aber nichts gefunden :(

Weiß jemand eine Lösung oder soll ich besser Graphics2D verwenden?

Danke/Gruß
vR34k$H0w
 

GUI-Programmer

Top Contributor
Die Lösung ist nicht direkt auf das JApplet zu zeichnen, also nicht in der paint()-Methode des Applets, sondern ein JPanel zur ContentPane des JApplets zu machen und in dessen paintComponent() zeichnen (und darin
Code:
super.paintComponent(g);
nicht vergessen. Folglich auch alle Komponenten dem JPanel adden.
 

vR34kSH0w

Mitglied
danke schonmal ich verstehe was du meinst, weiß aber ehrlich gesagt nicht so genau, wie ich das bewerkstellige (noch nich allzuviel mit applets gearbeitet). ein beispiel wäre hilfreich =)
 

GUI-Programmer

Top Contributor
Java:
import java.awt.*;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;
 
public class ClockApplet extends JApplet
{
    int hours;
    int millis;
    int minutes;
    int seconds;
    
    Calendar calendar;
    Timer timer;
    
    public void init()
    {
        calendar = Calendar.getInstance();
        
        hours = calendar.get(Calendar.HOUR_OF_DAY);
        millis = calendar.get(Calendar.MILLISECOND);
        minutes = calendar.get(Calendar.MINUTE);
        seconds = calendar.get(Calendar.SECOND);
		
		// Hier ne Änderung:
		JPanel pnlDrawingArea = new JPanel() {
			protected void paintComponent(Graphics g) {
				super.paintComponent(g);
				Graphics2D g2 = (Graphics2D) g.create();
				g2.setColor(Color.BLACK);
				g2.fillRect(0, 0, 200, 100);
				g2.setColor(Color.WHITE);
				g2.drawString(hours + " : " + minutes + " : " + seconds + " : " + millis, 20, 20);
				g2.dispose();
			}
		};
		setContentPane(pnlDrawingArea);
		// bis hier
        
        timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask()
        {
            public void run()
            {
                millis++;
                
                if(millis == 1000)
                {
                    millis = 0;
                    seconds++;
                }
                
                if(seconds == 60)
                {
                    seconds = 0;
                    minutes++;
                }
                
                if(minutes == 60)
                {
                    minutes = 0;
                    hours++;
                }
                
                if(hours == 24)
                {
                    hours = 0;
                }
                
				// Hier ne Änderung:
                pnlDrawingArea.repaint();
            }
        }, 0, 1);
        
        setSize(200, 100);
		// Hier ne Änderung:
        pnlDrawingArea.setBackground(Color.BLACK);
    }
}
 

vR34kSH0w

Mitglied
funktioniert bestens...ziemlich cool :toll:
frage zur semantik: macht es hier nun überhaupt noch sinn, ein applet zu verwenden oder ist es "besser", nur noch das panel zu verwenden?
 

hdi

Top Contributor
Ohne Applet hast du kein ausführbares Programm. Es sei denn du machst eine Applikation daraus, d.h. du fügst eine main-Methode ein. Aber eine Applikation ist nun mal kein Applet. Also wenn du das Ding im Browser laufen haben willst, dann brauchst du auf jeden Fall das Applet.
 

GUI-Programmer

Top Contributor
Als wie bereits gesagt wurde brauchst du ein ausführbares Programm, was bei dir das JApplet ist. Aber ich empfehle dir die Hauptklasse der GUI von JPanel zu erben. Dann kannst du diese als ContentPane für allerlei Ausführbares benutzen, wie etwa wie bei dir JApplet oder JFrame oder JWindow.
 

hdi

Top Contributor
Also nur damit das klar ist: Wenn das kein Applet werden soll, dann solltest du keinesfalls von JApplet erben. Entsprechend hast du dann auch diese ganzen Methoden á la init(), start() usw nicht. Statt dessen brauchst du eine main-Methode für die Applikation, in der das Programm dann startet:

Java:
public static void main(String... args){
   // Hier ist dein Programm
}
 

vR34kSH0w

Mitglied
die anwendungen sollen nachher auf einen frame von daher habe ich jetzt auf das window verzichtet =) die klassen erben von jpanel und es funktioniert klasse :applaus:

danke :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JApplet und Zeichnen AWT, Swing, JavaFX & SWT 8
J JApplet, HTML und access denied exitVM.0 AWT, Swing, JavaFX & SWT 3
B JApplet AWT, Swing, JavaFX & SWT 2
P JApplet verhält sich im Browser anders als im Eclipse (AppletViewer) AWT, Swing, JavaFX & SWT 3
P JApplet Browser Tab Öffnen AWT, Swing, JavaFX & SWT 5
H Swing JApplet - HTML - ClassNotFoundException AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
B Swing JTabbedPane in JApplet -> Reiter bei Aktualisation mehrmals zu sehen AWT, Swing, JavaFX & SWT 3
M JApplet mit Java 3D Komponente AWT, Swing, JavaFX & SWT 6
J JApplet langsam wegen vielen Tooltips? AWT, Swing, JavaFX & SWT 36
R JApplet, Elemente unsichtbar AWT, Swing, JavaFX & SWT 2
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
K JApplet Probleme AWT, Swing, JavaFX & SWT 5
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
H JApplet will sich nicht refreshen AWT, Swing, JavaFX & SWT 10
F OpenMap und Swing in JApplet AWT, Swing, JavaFX & SWT 8
S Applet JApplet Problem AWT, Swing, JavaFX & SWT 18
C Applet JApplet - Verständnissproblem AWT, Swing, JavaFX & SWT 3
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
J Swing JApplet Designfrage AWT, Swing, JavaFX & SWT 4
J JApplet schneidet Menüleiste ab AWT, Swing, JavaFX & SWT 4
D JApplet hängt im Browser fest AWT, Swing, JavaFX & SWT 5
M JFrame in JApplet einbinden AWT, Swing, JavaFX & SWT 13
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
E Bild auf JApplet AWT, Swing, JavaFX & SWT 5
Semox Swing Random Checkbox JApplet AWT, Swing, JavaFX & SWT 14
A Focus für JApplet AWT, Swing, JavaFX & SWT 7
U JPanel wechsel in JApplet AWT, Swing, JavaFX & SWT 14
J AWT JApplet lädt Bild nicht hoch AWT, Swing, JavaFX & SWT 7
R JApplet - Infos ueber Browser moeglich? AWT, Swing, JavaFX & SWT 5
V Kein Fokus für Key Bindings auf JPanel bzw JApplet AWT, Swing, JavaFX & SWT 2
S StackOverflowError bei MouseWheelListener für JApplet AWT, Swing, JavaFX & SWT 5
G JFrame in JApplet AWT, Swing, JavaFX & SWT 6
M Daten speichern mit JApplet AWT, Swing, JavaFX & SWT 9
lukas24680 JApplet und getContentPane() AWT, Swing, JavaFX & SWT 8
G paintComponent JPanel im JApplet AWT, Swing, JavaFX & SWT 2
S Alternative zu paint in JApplet AWT, Swing, JavaFX & SWT 3
R Im JFrame ein JApplet zum öffnen einer Url benutzen AWT, Swing, JavaFX & SWT 22
H JApplet fehler objekte unsichtbar. AWT, Swing, JavaFX & SWT 2
C Swing-JApplet AWT, Swing, JavaFX & SWT 3
B JDialog in JApplet AWT, Swing, JavaFX & SWT 3
P Image in JApplet geht nicht AWT, Swing, JavaFX & SWT 2
T Flackern trotz DoubleBuffering AWT, Swing, JavaFX & SWT 8
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
G Swing Flackern nach Override von paintComponent() AWT, Swing, JavaFX & SWT 3
S Swing Flackern und ausbrechen bei neuzeichnung AWT, Swing, JavaFX & SWT 7
K AWT flackern trotz buffering AWT, Swing, JavaFX & SWT 4
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
J Flackern wie mit BufferedImage beheben AWT, Swing, JavaFX & SWT 4
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
R Flackern beim JPanel-Übermalen AWT, Swing, JavaFX & SWT 9
P SWT SWT flackern beheben AWT, Swing, JavaFX & SWT 9
D Undecorated JFrame ohne Flackern resizen AWT, Swing, JavaFX & SWT 21
K Flackern trotz Double-Buffering AWT, Swing, JavaFX & SWT 10
sylo Flackern des Mauszeigers bei DND AWT, Swing, JavaFX & SWT 4
G ColorReader, bei Fadenkreuz zeichnen mit repaint() flackern AWT, Swing, JavaFX & SWT 19
eQuest Swing Snake repaint() "flackern" AWT, Swing, JavaFX & SWT 13
J Flackern in JEditorPane() AWT, Swing, JavaFX & SWT 14
JRTHEFROG Auflösungsabhängiges Flackern von Bildschirmmasken AWT, Swing, JavaFX & SWT 3
B JFrame flackern durch setSize() AWT, Swing, JavaFX & SWT 8
N Flackern beim neuzeichnen von JPanel AWT, Swing, JavaFX & SWT 19
S Falsche Position, Elemente erscheinen nicht, Flackern AWT, Swing, JavaFX & SWT 6
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
U Flackern verhindern AWT, Swing, JavaFX & SWT 5
J Flackern beim ersten laden von JPanel AWT, Swing, JavaFX & SWT 4
T Labels verschieben / Flackern AWT, Swing, JavaFX & SWT 2
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
A Panelwechsel durch RadioButtons AWT, Swing, JavaFX & SWT 1
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
S JavaFX Tab durch Enter ersetzten AWT, Swing, JavaFX & SWT 3
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
S Speicher Leak durch Tabellenaktualisierung AWT, Swing, JavaFX & SWT 5
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben