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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class RecTranslation {
public static void main(String[] args) {
MonRectangle monRectangle = new MonRectangle(0f,500f);
final JFrame fenetre = new JFrame("Translation Rectangle");
JPanel panel = new JPanel(new BorderLayout());
panel.add(monRectangle, BorderLayout.CENTER);
fenetre.add(monRectangle, BorderLayout.CENTER);
fenetre.setSize(500, 300);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
fenetre.setVisible(true);
}
});
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(monRectangle, 0L, 200, TimeUnit.MILLISECONDS);
}
}
class MonRectangle extends JComponent implements Runnable {
private static final long serialVersionUID = 1L;
private float x1;
private final float x2;
public MonRectangle(float x1, float x2) {
this.x1 = x1;
this.x2 = x2;
}
@Override
public void run() {
if (x1 >= x2) {
x1=10;
}
x1= x1 + 10;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
repaint();
}
});
}
@Override
public void paint(Graphics g) {
Shape shape = new RoundRectangle2D.Float(x1,100, 50, 50, 10, 10);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int startX = 0, startY = 30, endX = 70, endY = 40;
GradientPaint gradient = new GradientPaint(startX, startY, Color.white, endX, endY, Color.gray);
g2.setPaint(gradient);
g2.fill(shape);
g2.setColor(Color.black);
g2.setStroke(new BasicStroke(2));
g2.draw(shape);
}
} |
Partager