Gentegne JPanel ved tryk på JButton
Hej eksperterJeg er ved at eksperimentere lidt med JPanel og vil lave et lille program, hvor jeg gentegner et panel.
programmet tegner en cirkel hver gang jeg trykker på en knap - jeg vil gerne have, at den 'resetter' panelet, så det ser ud som om cirklen bliver større. Hvad er det jeg mangler at gøre?
Jeg kan også se, at min JButton bliver tegnet igen i øverste højre hjørne af vinduet - hvorfor gør den det - og hvordan kan jeg forhindre dette?
På forhånd tak
Brian
Kode til mit lille program:
********** START KLASSE **********
import javax.swing.JFrame;
public class Start {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CirkelPanel cPanel = new CirkelPanel();
frame.add(cPanel);
KnapPanel kPanel = new KnapPanel(cPanel);
frame.add(kPanel);
// Placering på skræmen
frame.setLocation(300, 200);
// Størrelsen på vinduet
frame.setSize(800, 600);
frame.setVisible(true);
********** CIRKEL PANEL **********
import java.awt.Graphics;
import javax.swing.JPanel;
public class CirkelPanel extends JPanel {
private int r = 5;
private int x = 100;
private int y = 100;
public CirkelPanel() {
this.setSize(200, 200);
}
public void paintComponent(Graphics g) {
g.drawOval(x-r, y-r, r * 2, r * 2);
}
public void setRadius(int i) {
this.r = i;
}
public int getRadius() {
return r;
}
}
********** KNAP PANEL **********
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class KnapPanel extends JPanel {
private JButton btn;
private CirkelPanel panel;
public KnapPanel(CirkelPanel panel) {
this.panel = panel;
this.setSize(200, 200);
btn = new JButton("Tryk");
this.add(btn);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
øgCirkel();
}
});
}
private void øgCirkel() {
panel.setRadius(panel.getRadius() + 5);
panel.repaint();
}
}
}
}