Ich möchte ein Rechteckt per Knopfdruck verschieben lassen und habe nun Probleme mit dem repaint(). Könnte jemand kurz n Auge auf meinen Code (insbesondere die translate-Methode) werfen und mir n Tipp geben, was ich falsch gemacht habe?
und noch die main:
Vielen Dank für jegliche Tipps!
Code:
import java.awt.Rectangle;
import java.awt.Graphics2D;
import java.awt.Graphics;
import javax.swing.JComponent;
public class Zeichner extends JComponent{
private Rectangle r;
public Zeichner()
{
}
public void translate(int x, int y)
{
r = new Rectangle(0,0,x,y);
repaint();
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
r = new Rectangle(0,0,20,50);
g2.draw(r);
}
}
und noch die main:
Code:
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.Component;
public class GrafikStarter extends Component {
final static int länge = 500;
final static int breite= 500;
public static void main(String[] args)
{
JFrame frame = new JFrame();
JButton button = new JButton("REPAINT");
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(button, BorderLayout.SOUTH);
final Zeichner z = new Zeichner();
panel.add(z, BorderLayout.CENTER);
class Drawer implements ActionListener
{
public void actionPerformed(ActionEvent listener)
{
z.translate(100, 100);
}
}
ActionListener listener = new Drawer();
button.addActionListener(listener);
frame.add(panel);
frame.setSize(länge, breite);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Vielen Dank für jegliche Tipps!