Hallo.
meine Frage gilt dem Event Bereich in Swing.
Ich habe mir schon einige Texte und Quelltexte zum Thema GUI durchgelesen,
allerdings habe ich da immer noch die eine Frage.
Ich versuche eine Viereck zu zeichnen.
Die Klassen sind in verschiedenen Dateien untergebracht.
Mein Problem ist das das Viereck actrect und die Liste drawList
zwar im FrameGUISampel sichtbar sind, allerding sind diese
nicht dem FrameMouseMotionAdapter und FrameMouseAdapter kenntlich.
Desweiteren wird bei FrameMouseAdapter die ersten Schritte getätigt um
das Viereck zu zeichnen. Der FrameMouseMotionAdapter allerdings nichts
von den schon gemachten Interaktion, d.h. der Versuch das Viereck zu zeichnen,
Punkte, Koordinaten etc., kennt.
Ich habe hier schon mit Set und Get Funktionen gearbeitet.
Auch habe ich mich bezüglich des Observer Musters informiert,
allerdings würde ich gerne eure Meinung zu meinem Problem hören.
Info: Wenn alle Klassen in einer Datei sind sollte es funktionieren.
Zusätzlich möchte ich vielleicht Dreiecken oder anderen Objekten zeichnen!
Vielleicht habe ich auch die Grundsätze nicht verstanden!
Anregungen oder Vorschläge welche Themen zum Problem interessant wären, würden mir auch schon weiter helfen.
meine Frage gilt dem Event Bereich in Swing.
Ich habe mir schon einige Texte und Quelltexte zum Thema GUI durchgelesen,
allerdings habe ich da immer noch die eine Frage.
Ich versuche eine Viereck zu zeichnen.
Die Klassen sind in verschiedenen Dateien untergebracht.
Mein Problem ist das das Viereck actrect und die Liste drawList
zwar im FrameGUISampel sichtbar sind, allerding sind diese
nicht dem FrameMouseMotionAdapter und FrameMouseAdapter kenntlich.
Desweiteren wird bei FrameMouseAdapter die ersten Schritte getätigt um
das Viereck zu zeichnen. Der FrameMouseMotionAdapter allerdings nichts
von den schon gemachten Interaktion, d.h. der Versuch das Viereck zu zeichnen,
Punkte, Koordinaten etc., kennt.
Ich habe hier schon mit Set und Get Funktionen gearbeitet.
Auch habe ich mich bezüglich des Observer Musters informiert,
allerdings würde ich gerne eure Meinung zu meinem Problem hören.
Info: Wenn alle Klassen in einer Datei sind sollte es funktionieren.
Zusätzlich möchte ich vielleicht Dreiecken oder anderen Objekten zeichnen!
Vielleicht habe ich auch die Grundsätze nicht verstanden!
Anregungen oder Vorschläge welche Themen zum Problem interessant wären, würden mir auch schon weiter helfen.
Java:
public class FrameSample {
public static void main(String[] args) {
FrameCommandListener cmd = new FrameCommandListener();
FrameWindowAdapter wnda = new FrameWindowAdapter();
FrameComponentAdapter ca = new FrameComponentAdapter();
FrameMouseAdapter ma = new FrameMouseAdapter();
FrameMouseMotionAdapter mm = new FrameMouseMotionAdapter();
FrameGUISample gui = new FrameGUISample(wnda,cmd,ca,ma,mm);
}
}
public class FrameGUISample extends Frame {
private static Rectangle actrect;
private static Vector drawlist;
public FrameGUISample(FrameWindowAdapter fwa, FrameCommandListener fcmdl,
FrameComponentAdapter fcomp, FrameMouseAdapter fmouseadp,
FrameMouseMotionAdapter mm) {
super("FrameGUISample");
setSize(400, 300);
setLocation(50, 50);
setVisible(true);
actrect = new Rectangle(0,0,0,0);
drawlist = new Vector();
addWindowListener(fwa);
addKeyListener(fcmdl);
addComponentListener(fcomp);
addMouseListener(fmouseadp);
addMouseMotionListener(mm);
}
public void paint(Graphics g) {
Rectangle r;
Enumeration e;
for (e = drawlist.elements(); e.hasMoreElements();) {
r = (Rectangle) e.nextElement();
g.drawRect(r.x, r.y, r.width, r.height);
}
//g.drawRect(actrect.x, actrect.y, actrect.width, actrect.height);
if (actrect.x > 0 || actrect.y > 0) {
g.drawRect(actrect.x, actrect.y, actrect.width, actrect.height);
}
}
}
public class FrameMouseMotionAdapter extends MouseMotionAdapter {
private Rectangle actrect;
public void mouseDragged(MouseEvent event) {
int x = event.getX();
int y = event.getY();
if (x > actrect.x && y > actrect.y) {
actrect.width = x - actrect.x;
actrect.height = y - actrect.y;
}
event.getComponent().repaint();
}
}
public class FrameMouseAdapter extends MouseAdapter {
private Rectangle actrect;
public void mousePressed(MouseEvent event) {
actrect = new Rectangle(event.getX(), event.getY(), 0, 0);
}
public void mouseReleased(MouseEvent event) {
if (actrect.width > 0 || actrect.height > 0) {
FrameGUISample.addRectangleElement(actrect);
}
event.getComponent().repaint();
}
}