Guten Tag allerseits!
Ich bin ein absoluter Java Neuling und habe deshalb noch nicht ganz die Prinzipien der objektorientierten Orientierung verinnerlicht. Aktuell stehe ich vor dem folgenden Problem:
Um Konstruktoren zu verstehen und anzuwenden, arbeite ich an einem Projekt, in dem Rechtecke beim Drücken eines JButtons erstellt werden sollen. Diese Rechtecke sollen in einer ArrayList gespeichert werden und im Anschluss einzeln angesprochen werden können.
Soweit, so gut.
Das Problem entsteht dadurch, dass ich Rechtecke mit der Draw-Methode erzeuge und nicht weiß, wie ich dort Parameter übergeben kann.
Ich möchte die x-Position und y-Position nämlich in einem MessageDialog abfragen und anschließend die Rechtecke dort positionieren.
Zudem benötigen die Rechtecke ja auch eine Art ID in der ArrayList...
Vielen Dank für eure Hilfe!
Hier mein bisheriger Code:
Das Fenster, auf dem die Rechtecke erscheinen sollen.
Die Draw-Methode für die Rechtecke.
Der Action Listener.
}
Ich bin ein absoluter Java Neuling und habe deshalb noch nicht ganz die Prinzipien der objektorientierten Orientierung verinnerlicht. Aktuell stehe ich vor dem folgenden Problem:
Um Konstruktoren zu verstehen und anzuwenden, arbeite ich an einem Projekt, in dem Rechtecke beim Drücken eines JButtons erstellt werden sollen. Diese Rechtecke sollen in einer ArrayList gespeichert werden und im Anschluss einzeln angesprochen werden können.
Soweit, so gut.
Das Problem entsteht dadurch, dass ich Rechtecke mit der Draw-Methode erzeuge und nicht weiß, wie ich dort Parameter übergeben kann.
Ich möchte die x-Position und y-Position nämlich in einem MessageDialog abfragen und anschließend die Rechtecke dort positionieren.
Zudem benötigen die Rechtecke ja auch eine Art ID in der ArrayList...
Vielen Dank für eure Hilfe!
Hier mein bisheriger Code:
Das Fenster, auf dem die Rechtecke erscheinen sollen.
Code:
package Gui;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Window {
JFrame jf;
int i = 0;
public Window() {
jf = new JFrame();
jf.setSize(700, 722);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(null);
jf.setLocationRelativeTo(null);
JButton btn = new JButton();
btn.setBounds(0, 0, 300, 300);
btn.addActionListener(new ActionHandler());
jf.add(btn);
List<Rectangle> rects = new ArrayList<Rectangle>();
if (ActionHandler.isPressed == true) {
String eingabe1 = JOptionPane.showInputDialog("x Koordinate");
Rectangle.xPos(i) = Integer.parseInt (eingabe1);
String eingabe2 = JOptionPane.showInputDialog("y Koordinate");
Rectangle.yPos(i) = Integer.parseInt (eingabe2);
// Das Rechteck soll mit einer ID "i" angesteuert werden
rects.add(new Rectangle(i,xPos(i),yPos(i))); // Hier wollte ich die ID, also den Index in der ArrayList festlegen
// und außerdem die x und y Koordinate übergeben
i++;
}
jf.setVisible(true);
}
}
Die Draw-Methode für die Rechtecke.
Code:
package Gui;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JLabel;
public class Rectangle extends JLabel {
private static final long serialVersionUID = 1L;
public static int xPos = 0, yPos = 0;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.BLUE);
g.fillRect(xPos, yPos, 50, 50);
}
}
Der Action Listener.
Code:
package Gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionHandler implements ActionListener {
public static boolean isPressed = false;
@Override
public void actionPerformed(ActionEvent e) {
isPressed = true;
}
}