Hallo Leute, ich habe mal versucht eine einfache Animation in Java zu programmieren.
Das Programm macht auch schon was es soll, aber leider flackern
die dargestellten Objekte.
Hab gelesen, dass man das mit Double Buffering weg bekommt.
Aber ich hab es einfach nicht geschafft das Programm so umzuschreiben, dass es funktioniert.
Hier mein funktionierendes Programm aber ohne DB.
Vielleicht kann mir ja einer helfen????
Wäre euch sehr dankbar.
Mit freundlichen Grüssen rom4o
Das Programm macht auch schon was es soll, aber leider flackern
die dargestellten Objekte.
Hab gelesen, dass man das mit Double Buffering weg bekommt.
Aber ich hab es einfach nicht geschafft das Programm so umzuschreiben, dass es funktioniert.
Hier mein funktionierendes Programm aber ohne DB.
Code:
import java.awt.*;//Graphics;
import javax.swing.*;//JFrame
import java.awt.event.*;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.util.Date;
public class Kreis_04Buff extends JFrame{
// VARIABLEN
private int posx;
private Thread t;
private boolean schalter1 = true;
//Zeitvariablen
int zahl = 0;
int oldcent = 0;
int Cent = 0;
long zeit = 0;
long refzeit = System.currentTimeMillis(); //Zeit zum Programmstart
String Szeit = String.valueOf(zeit);
String Scent;
String Susecent;
// ------------
public Kreis_04Buff(String newTitel) { // Konstruktormethode
super.setTitle(newTitel);
}
public void start() { //Hauptmethode
t = new Thread(new Runnable(){
public void run(){
while(true){
zeit = System.currentTimeMillis();
Szeit = String.valueOf(zeit-refzeit);
Cent = cent(zeit,refzeit,oldcent);
oldcent = Cent;
Scent = String.valueOf(Cent);
Susecent = String.valueOf(usecent(Cent));
//Steuerung des Kreises
if(posx==400){schalter1 = false;}
if(posx==-50){schalter1 = true;}
if(schalter1){posx++;}
else{posx--;}
try{
Thread.sleep(20);
repaint();
} catch(InterruptedException e){;}
}
}
}
);
t.start();
}
//----------------------------------------------------------------------
public int cent(long a, long b,int c){
int d = (int) (a-b);
int temp = c;
if( (d%10) == 0){
temp++;
}
return temp;
}
public int usecent(int a){
int h = (a/100)+1;
if( (h%2) == 0){
return 100- (a-((h-1)*100)); //Absteigend
}
if( (h%1) == 0){
return a-((h-1)*100); //Aufsteigend
}
else return 0;
}
//----------------------------------------------------------------------
public static void main(String str[]) { //MAIN
Kreis_04Buff fenster = new Kreis_04Buff("Kreis_04Buff");
fenster.setSize(500, 500);
fenster.setLocation(300,100);
fenster.setResizable( false );
fenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //beendet das Programm beim schließen des Fensters
//Hinzufügen eines Labels
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put( "Label.font",((Font)uiDefaults.get("Label.font")).deriveFont(15f) );
JLabel l = new JLabel( "<html>Prototyp.
Wasserstandsfüllanzeige!!</html>",JLabel.LEFT );
// l.setFont( new Font("Serif", Font.BOLD, 30) );
l.setForeground( Color.BLUE );
//l.setBackground(Color.BLACK); //bringt nix???
fenster.add( l );
//Hinzufügen eines Buttons
/* JButton b = new JButton( "Ende" );
fenster.add( b );
ActionListener al = new ActionListener() {
public void actionPerformed( ActionEvent e ) {
System.exit( 0 );
}
};
b.addActionListener( al );
*/
//setze Fenster sichtbar
fenster.setVisible(true);
BufferedImage buffer = new BufferedImage (500,500,BufferedImage.TYPE_INT_RGB);
fenster.start(); //Hauptmethode
}
public void paint(Graphics g) { //Paintmethode
super.paint(g);
g.setColor(new Color(0, 0, 0));
//g.drawOval(50+posx, 50, 100, 100);
g.fillOval(50+posx, 50, 50, 50);
g.fillRect(50+posx,50,1,1); //ein Punkt
g.drawRect(199,199,101,201);
g.drawString( "100%", 305, 205 );
g.drawString( "0%", 312, 403 );
g.drawString( Integer.toString(zahl), 380, 300 );
g.drawString( Szeit + " ms", 350, 320 );
g.drawString( Scent, 350, 340 );
g.drawString( Susecent + " %", 350, 360 );
g.setColor(Color.BLUE);
g.fillRect(200,400-2*(usecent(Cent)),100,2*(usecent(Cent))); //jeweils y-Komponenten manipuliern
//Wertebereich für (x,Y,x,y) 400>Y>200
//repaint();
}
}
Vielleicht kann mir ja einer helfen????
Wäre euch sehr dankbar.
Mit freundlichen Grüssen rom4o