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);
}
}