Ich versuche, zufällig (noch nicht) Kreise auf einem JPanel durch Klicken auf ein JMenu zu malen. Ich benutze ein JTextField (und muss dies behalten) für einige Ausgaben. Hier ist meine Klasse:Verständnis Schwierigkeiten Java Swing
class RandomDrawer extends JPanel implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//double x = Math.random();
//double y = Math.random();
Random generator = new Random();
int x = generator.nextInt(100)+1;
int y = generator.nextInt(100)+1;
//System.out.printf("x = %d y = %d\n", x, y);
status.setText(String.format("rnd draw x: %d y: %d", x, y));
Graphics2D gg = (Graphics2D) canvas.getGraphics();
gg.setColor(Color.BLACK);
gg.drawOval(50, 50, 50, 50);
}
}
Solange ich die Linie lassen
status.setText (String.format ("rnd Unentschieden x:% d y:% d", x, y));
bleiben Sie dort, ich bekomme nichts gezeichnet. Ohne es verstehe ich meinen Kreis, ich bin mir nicht sicher, was das Problem ist. Ich kann nicht herausfinden, warum nichts gezeichnet wird.
Vielen Dank
EDIT:
Hallo, ich versuchte, die gegebenen Informationen zu verstehen. Leider muss ich mit der Graphics2D Klasse zeichnen, also kann ich nicht mit Formen zeichnen. Also habe ich es versucht, leider wird es noch nicht zeichnen, kannst du mir ein paar Tipps geben? Ich habe versucht, eine neue Klasse DrawShape zu erstellen, mein Gedanke war, dass ich mit diesen Objekten den Überblick behalten konnte. In meinem Verständnis sollte es jetzt ein gezogenes Oval sein
gg.drawOval (100,100,100,100);
Vielen Dank.
class DrawShape {
public DrawShape(String string) {
// TODO Auto-generated constructor stub
}
}
class RandomDrawer extends JPanel implements ActionListener {
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
private List<DrawShape> shapes = new ArrayList<DrawShape>();
public void addShape(DrawShape s) {
shapes.add(s);
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
final Graphics2D gg = (Graphics2D) g;
gg.setColor(Color.BLACK);
gg.drawOval(100, 100, 100, 100);
}
@Override
public void actionPerformed(ActionEvent e) {
Random generator = new Random();
int x = generator.nextInt(100)+100;
int y = generator.nextInt(100)+100;
if (e.getActionCommand()==("Draw RandomCircle")) {
System.out.printf("x = %d y = %d\n", x, y);
status.setText(String.format("rnd draw x:%d y:%d ", x, y));
DrawShape circle = new DrawShape("Circle");
addShape(circle);
int count = shapes.size();
System.out.printf("objects in array: %d\n", count);
}
else if (e.getActionCommand()==("Draw RandomRectangle")) {
System.out.printf("x = %d y = %d\n", x, y);
//status.setText(String.format("rnd draw x: y: "));
//Graphics2D gg = (Graphics2D) canvas.getGraphics();
//gg.setColor(Color.BLACK);
//gg.drawRect(x, y, generator.nextInt(x), generator.nextInt(y));
}
}
}
danke für deinen Kommentar, ich habe meine Herangehensweise geändert, kannst du bitte einen Blick darauf werfen und mir ein paar Tipps geben? – Kaw