F
flow
Hallo zusammen!
Ich wollte einen Kreis programmieren, welcher mit einem Button erscheint und sich animiert vergrößert, und mit einem anderem Button verschwindet und wieder "klein" macht.
Das Problem dabei: Der Kreis vergrößert sich nur wenn man das Fenster größer macht und das zurücksetzen der größe funktioniert auch nicht richtig.
Bin um jede Hilfe dankbar!
flow
Ich wollte einen Kreis programmieren, welcher mit einem Button erscheint und sich animiert vergrößert, und mit einem anderem Button verschwindet und wieder "klein" macht.
Das Problem dabei: Der Kreis vergrößert sich nur wenn man das Fenster größer macht und das zurücksetzen der größe funktioniert auch nicht richtig.
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.geom.Ellipse2D;
import java.awt.event.*;
public class AnimationWindow extends JFrame implements ActionListener {
public AnimationWindow()
{
this.pack();
this.setLocationByPlatform( true );
this.setVisible( true );
this.setSize(300,100);
JButton Button1 = new JButton("start");
JButton Button2 = new JButton("hide");
this.setLayout(new BorderLayout());
this.add(Button1, BorderLayout.LINE_START);
this.add(Button2, BorderLayout.LINE_END);
Button1.addActionListener(this);
}
public void actionPerformed(ActionEvent event) {
Animation ani = new Animation();
this.add(ani, BorderLayout.CENTER);
ani.Fill();
}
public static void main( String[] args ){
AnimationWindow test = new AnimationWindow();
}
}
class Animation extends JPanel implements ActionListener
{
private Ellipse2D.Float ellipse = new Ellipse2D.Float();
private double esize = 0;
private double mSize = 40;
private Timer timer;
public void step() {
esize++;
if (esize < mSize) {
ellipse.setFrame(ellipse.getX(), ellipse.getY(), esize, esize);
} else {
timer.stop();
}
}
public void Fill() {
timer = new Timer(20, this);
timer.start();
}
public void render(Graphics2D g2) {
g2.setColor(Color.black);
g2.fill(ellipse);
}
public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2.setRenderingHints(rh);
step();
render(g2);
}
public void actionPerformed(ActionEvent e) {
repaint();
}
}
flow
Zuletzt bearbeitet von einem Moderator: