Portal > Foren > Java > Desktop-Applikationen und Grafik > repaint verhindern
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 10.08.2005, 11:22 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 539
Standard repaint verhindern

Ich habe ein Applet in Form eines Fernseher. Rechts, Links, Oben und Unten ein JPanel (jeweils eine Klasse, die von JPanel erbt und mit der paintComponent()-Methode und Graphics2D gezeichnet wird) für den Rahmen und in der Mitte der Inhalt. Dieser Fernseher geht über die größe des Bildschirms, sodass man für den unteren Teil im Browser nach unten scrollen muss. Beim runterscrollen flackert das Applet. Dieses möchte ich verhindern. Habe mir gedacht, dass ich den JPanels ein setIgnoreRepaint mitgebe, hilft aber auch nichts.

Und zwar immer, wenn über oder unter dem Applet kein Freiraum ist, also wenn das Applet sich über mehr als das komplette vertikale Sichtfeld des Users zieht
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.08.2005, 17:34 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 539
Standard

Hab gehört, dass Double Buffering das Problem behebt. Nur will das bei mir nicht so ganz funktionieren. Kann mir jemand ein Beispiel evtl. dazu posten? Thx
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2005, 10:27 Nach oben    #3
lokl
Gast
 
Beiträge: n/a
Standard

Hi,

probiers mal hiermit: http://www.galileocomputing.de/openb....htm#Xxx999504
Hoffe das löst dein Problem
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2005, 11:01 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 539
Standard

Danke für den Link. Aber anscheinend bin ich zu blöd das anzuwenden. Hab mich gestern scho an nem Tutorial für double Buffering versucht und bin ebenfalls kläglich gescheitert. Selbes bild wie gestern: Entweder NullPointerException bei den getGraphics() vom offscreenImage, oder es läd sich zu tode, oder es wird einfach ein Viereckiger kasten angezeigt. :confused: :mad: . Wenn jemand lust hat, könnte er sich ja mal daran versuchen. Währe sehr net. Mein code ist auch net lang:

PHP-Code:
import java.awt.*; 
import javax.swing.*; 
import javax.swing.event.*;
import java.awt.event.*; 
import java.net.*; 
import java.io.*;
public class 
Fenster extends JApplet implements HyperlinkListener 
 static 
JEditorPane edit = new JEditorPane(); 
 
LeftPane left = new LeftPane(); 
 
RightPane right = new RightPane(); 
 
JPanel mainPane = new JPanel(); 
 
JScrollPane scroll = new JScrollPane(edit); 
  
 public 
void init() { 
   
  
edit.setEditable(false); 
  
edit.addHyperlinkListener(this);
  
left.setPreferredSize(new Dimension(25610)); 
  
right.setPreferredSize(new Dimension(25610)); 
  
mainPane.setLayout(new BorderLayout()); 
  
mainPane.add(leftBorderLayout.WEST); 
  
mainPane.add(rightBorderLayout.EAST); 
  
mainPane.add(scroll);
  try {
   
edit.setPage(new URL(getCodeBase(), "go_Home.html"));
   
edit.getPage();
  }
  catch (
IOException e) {
   
System.out.println(e);
  }
  
setContentPane(mainPane); 
 }
 
 public 
void hyperlinkUpdate(HyperlinkEvent hyl) {
  
  if (
hyl.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
   try {
    if (
hyl.getDescription().startsWith("http://")) {
     
getAppletContext().showDocument(new URL(hyl.getDescription()), "_blank");
    }
    else {
     
edit.setPage(new URL(getCodeBase(), hyl.getDescription()));
     
edit.getPage();
    }
   }
   catch(
IOException e) {
    
System.out.println(e);
   }
  }
 }

class 
LeftPane extends JPanel 
  
 public 
void paintComponent(Graphics comp) { 
   
  
Graphics2D comp2D = (Graphics2D)comp
  
comp2D.setColor(new Color(12000)); 
  
comp2D.fillRect(0025610); 
  
comp2D.setColor(Color.black); 
  
comp2D.fillRoundRect(0050610610610); 
 } 

class 
RightPane extends JPanel 
  
 public 
void paintComponent(Graphics comp) { 
   
  
Graphics2D comp2D = (Graphics2D)comp
  
comp2D.setColor(new Color(12000)); 
  
comp2D.fillRect(0025610); 
  
comp2D.setColor(Color.black); 
  
comp2D.fillRoundRect(-25050610610610); 
 } 

Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2005, 15:36 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 539
Standard

Hab jetzt noch n Tut gefunden und das Ding nach gebaut. LeftPane schaut jetzt so aus:


PHP-Code:
class LeftPane extends JPanel 
 
Image gebuffered
Graphics drawBuffer
 
public 
LeftPane() { 
 
     
gebuffered createImage(25610); 
     
drawBuffer gebuffered.getGraphics(); 

 
public 
void paint(Graphics comp) { 
 
     
drawBuffer.setColor(new Color(12000)); 
     
drawBuffer.fillRect(0025610); 
     
drawBuffer.setColor(Color.black); 
     
drawBuffer.fillRoundRect(0050610610610); 
     
comp.drawImage(gebuffered00this); 

 
public 
void update(Graphics g) { 
 
     
paint(g); 


Ich denke, der müsste so auch funktionieren. Nur leider bekomme ich bei

drawBuffer = gebuffered.getGraphics();

eine NullpointerException

Zitat:
Java Plug-in 1.5.0_02
Verwendung der JRE-Version 1.5.0_02 Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = C:\Dokumente und Einstellungen\stkiese


----------------------------------------------------
c: Konsolenfenster schließen
f: Objekte in Finalisierungswarteschlange finalisieren
g: Speicherbereinigung
h: Diese Hilfemeldung anzeigen
l: ClassLoader-Liste ausgeben
m: Speicherbelegung anzeigen
o: Protokollierung auslösen
p: Proxy-Konfiguration neu laden
q: Konsole ausblenden
r: Richtlinien-Konfiguration neu laden
s: System- und Bereitstellungseigenschaften ausgeben
t: Threadliste ausgeben
v: Thread-Stack ausgeben
x: ClassLoader-Cache löschen
0-5: Trace-Stufe auf <n> setzen
----------------------------------------------------

java.lang.NullPointerException
at LeftPane.callStart(Fenster.java:64)
at Fenster.init(Fenster.java:1
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Weiß jemand woran das liegt?
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeilenumbruch nach <div> verhindern? ljungi HTML, XML und CSS 9 19.08.2006 21:31
Download von Bildern verhindern Xean PHP-Programmierung 17 11.07.2006 20:08
Wie kann ich das verhindern? bob PHP-Programmierung 10 04.02.2006 13:00
Programmbeendigung verhindern Robinson Allgemeine Java-Programmierung 4 14.12.2005 10:01
repaint soll nuezeichnen, nicht überzeichnen... smith99 Desktop-Applikationen und Grafik 1 28.12.2004 12:47


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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