Hallo
Ich beschäftige mich erst seit kurzem mit Java und bin daher noch nicht sehr sicher darin.
Ich muss mit der linken Maustaste ein Rechteck zeichnen welches wieder verschwindet wenn ich ein Zweites zeichne. Das habe ich geschafft :idea: jedoch muss ich mit der rechten Maustaste das Rechteck um 90 Grad drehen können. Falls jemand einen Tipp hat oder einen Link wo dies erklärt ist oder selbs kurz helfen könnte dann wäre ich sehr froh :toll:
Mit freundlichen Grüssen
Sophia
Ich beschäftige mich erst seit kurzem mit Java und bin daher noch nicht sehr sicher darin.
Ich muss mit der linken Maustaste ein Rechteck zeichnen welches wieder verschwindet wenn ich ein Zweites zeichne. Das habe ich geschafft :idea: jedoch muss ich mit der rechten Maustaste das Rechteck um 90 Grad drehen können. Falls jemand einen Tipp hat oder einen Link wo dies erklärt ist oder selbs kurz helfen könnte dann wäre ich sehr froh :toll:
Mit freundlichen Grüssen
Sophia
Java:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
public class Negyszog extends Applet {
if (SwingUtilities.isRightMouseButton (evt))
@Override
SelectionArea drawingPanel;
Label label;
@Override
public void init() {
GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridBag);
drawingPanel = new SelectionArea(this);
c.fill = GridBagConstraints.BOTH;
c.weighty = 1.0;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridBag.setConstraints(drawingPanel, c);
add(drawingPanel);
label = new Label("Drag within the framed area.");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1.0;
c.weighty = 0.0;
gridBag.setConstraints(label, c);
add(label);
drawingPanel.setVisible(true);
validate();
}
@Override
public void update(Graphics g){
paint(g);
}
}
class SelectionArea extends Canvas implements ActionListener, MouseListener, MouseMotionListener{
Rectangle currentRect;
Negyszog controller;
//for double buffering
Image image;
Graphics offscreen;
public SelectionArea(Negyszog controller) {
super();
this.controller = controller;
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void actionPerformed(ActionEvent ae){
repaintoffscreen();
}
public void repaintoffscreen(){
image = createImage(this.getWidth(), this.getHeight());
offscreen = image.getGraphics();
Dimension d = getSize();
if(currentRect != null){
Rectangle box = getDrawableRect(currentRect, d);
//Draw the box outline.
offscreen.drawRect(box.x, box.y, box.width - 1, box.height - 1);
//repaint();
}
}
@Override
public void mouseEntered(MouseEvent me) {}
@Override
public void mouseExited(MouseEvent me){ }
@Override
public void mouseClicked(MouseEvent me){}
@Override
public void mouseMoved(MouseEvent me){}
@Override
public void mousePressed(MouseEvent me) {
currentRect = new Rectangle(me.getX(), me.getY(), 0, 0);
repaintoffscreen();
}
@Override
public void mouseDragged(MouseEvent me) {
System.out.println("here in dragged()");
currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y);
repaintoffscreen();
repaint();
}
@Override
public void mouseReleased(MouseEvent me) {
currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y);
repaintoffscreen();
repaint();
}
@Override
public void update(Graphics g){
paint(g);
}
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
Rectangle getDrawableRect(Rectangle originalRect, Dimension drawingArea) {
int x = originalRect.x;
int y = originalRect.y;
int width = originalRect.width;
int height = originalRect.height;
//Make sure rectangle width and height are positive.
if (width < 0) {
width = 0 - width;
x = x - width + 1;
if (x < 0) {
width += x;
x = 0;
}
}
if (height < 0) {
height = 0 - height;
y = y - height + 1;
if (y < 0) {
height += y;
y = 0;
}
}
//The rectangle shouldn't extend past the drawing area.
if ((x + width) > drawingArea.width) {
width = drawingArea.width - x;
}
if ((y + height) > drawingArea.height) {
height = drawingArea.height - y;
}
return new Rectangle(x, y, width, height);
}
}