import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ShockCfg extends JFrame
{
public static void main(final String args[])
{
UIMANAGER.put("TabbedPane.selected", Color.green);
JDialog.setDefaultLookandFeelDecorated(true);
JFrame vonbraun = new JFrame();
vonbraun.setBackground(Color.black);
vonbraun.setForeground(Color.green);
JPanel vonbraun1 = new JPanel();
vonbraun.getContentPane().add(vonbraun1);
vonbraun1.setOpaque(true);
new Rb();
vonbraun.pack();
vonbraun.setSize(566, 366);
vonbraun.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
vonbraun.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Rb
{
public void Paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.green);
int x = 99;
int y = 99;
g2.drawRect(x, y, 9, 9);
while(x<=99)
{
repaint();
g2.drawRect(++x, ++y, 9, 9);
}
}
}
// Panel das ein einzelnes Bild zeichnet:
public class Paint extends JComponent{
private int z;
public void setZ( int z ){
this.z = z;
repaint();
}
public void paintComponent( Graphics g ){
g.setColor( Color.BLACK );
g.fillRect( 0, 0, getWidth(), getHeight() );
g.setColor( Color.RED );
g.fillOval( z, getWidth()/2, 10, 10 );
}
}
// Thread, der die Animation berechnet (in diesem Fall
// ist "z" die ganze Animation).
public class Animation extends Thead{
private int z = 0;
private long time = 0;
private Paint paint;
public Animation( Paint paint ){
this.paint = paint;
}
public void start(){
time = System.currentTimeMillis();
super.start();
}
public void run(){
while( !isInterrupted() ){
long current = System.currentTimeMillis();
int delta = (int)(current - time);
z += delta;
paint.setZ( z );
time = current;
try{
Thread.sleep( 25 );
}
catch( InterruptedException ex ){
interrupt();
}
}
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ShockCfg
{
public static void main(String args[])
{
Rb rb2 = new Rb();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Rb extends JFrame
{
public Rb()
{
JFrame vonbraun = new JFrame();
vonbraun.setBackground(Color.black);
vonbraun.setForeground(Color.green);
JPanel vonbraun1 = new JPanel();
vonbraun.getContentPane().add(vonbraun1);
vonbraun1.setOpaque(true);
vonbraun.pack();
vonbraun.setSize(566, 366);
vonbraun.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
vonbraun.setVisible(true);
}
public void Paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.green);
int x = 99;
int y = 99;
g2.drawRect(x, y, 9, 9);
while(x<=99)
{
repaint();
g2.drawRect(++x, ++y, 9, 9);
}
}
}
public class Rb extends JComponent{
public void paint( Graphics g ){ ... }
}
JFrame frame = new JFrame();
frame.add( new Rb() );
frame.setVisible( true );
public class Rb extends JFrame{
public static void main( String... args ){
Rb frame = new Rb();
frame.setVisible( true );
}
}
public class ShockCfg
{
public static void main(String args[])
{
Rb rb = new Rb();
rb.setVisible(true);
}
}
import java.awt.*;
import javax.swing.*;
public class Rb extends JFrame
{
public Rb()
{
setSize(566, 366);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void paint(Graphics g)
{
g.setColor(Color.green);
int x = 99;
int y = 99;
g.drawRect(x, y, 9, 9);
}
}
Hat sich bisher als sehr gut erwiesen und ich hatte nie Probleme damit. Natürlich muss man die Bufferstrategie und dergleichen selbst festlegen, das sind aber auch nur ~3 Zeilen Code zusätzlich.Hobbit_Im_Blutrausch hat gesagt.:In diesem Fall sollte es zu einem Problem kommen, wenn er auf ein Canvas zeichnet, da Canvas AWT und JFrame Swing ist .
Evil-Devil hat gesagt.:Dann nimm doch ein reguläres Frame. Das fällt am Ende eh nicht auf, da das ganze ohne Rahmen etc dargestellt wird.
Evil-Devil hat gesagt.:Spätestens wenn du JOGL/LWJGL nutzen willst, musst du AWT und Swing mischen. Und sei es nur die OpenGLAWTCanvas Komponente.
Naja, ist eigentlich zuviel Extraballast. Vor allem wenn man beim 4K Contest mitmachtHobbit_Im_Blutrausch hat gesagt.:Evil-Devil hat gesagt.:Dann nimm doch ein reguläres Frame. Das fällt am Ende eh nicht auf, da das ganze ohne Rahmen etc dargestellt wird.
Oder anstelle von Canvas JComponent, JPanel, ...
public class SockCfg
{
public static void main(String args[])
{
Rb rb = new Rb();
rb.setVisible(true);
}
}
class Rb extends JFrame
{
public Rb()
{
setBackground(Color.black);
setForeground(Color.green);
setSize(566, 366);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void Paint(Graphics g)
{
Graphics2D g2 =(Graphics2D) g;
g2.setColor(Color.green);
int x = 99;
int y = 99;
g2.drawRect(x, y, 9, 9);
while(x<399)
{
repaint();
g2.drawRect(++x, ++y, 9, 9);
}
}
}
public class Test
{
public static void main(String[] args)
{Rickenbacker Rick = new Rickenbacker();
Rick.setVisible(true);
Thread Ricker = new Thread();
Ricker.start();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Rickenbacker extends JFrame implements Runnable
{
public Rickenbacker()
{
//fenster erstellen
//super("ShockCfg" + ShockCfg.version);
setBackground(Color.black);
setForeground(Color.green);
setSize(566,366);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //EXIT_ON_CLOSE?
}
public void run()
{
;
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.green);
int x = 66;
int y = 66;
g2.drawRect(x, y, 9, 9);
while(y<361)
{
this.repaint();
g2.drawRect(++x, ++y, 9, 9);
try
{
wait(366);
}
catch(InterruptedException e)
{
System.out.println("Error: You hacked yourself!");
}
}
}
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
class Rickenbacker extends JFrame {
JPanel panel;
MyThread thread;
public Rickenbacker() {
setBackground(Color.black);
setForeground(Color.green);
setSize(566, 366);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new BorderLayout());
panel = new JPanel() {
int x = 0;
int y = 0;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.green);
g2.drawRect(++x, ++y, 9, 9);
}
};
thread = new MyThread();
thread.start();
add(panel, BorderLayout.CENTER);
}
class MyThread extends Thread {
@Override
public void run() {
while (true) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
panel.repaint();
}
}
}
public static void main(String[] args) {
Rickenbacker Rick = new Rickenbacker();
Rick.setVisible(true);
}
}