Hey ho, habe gerade ein kleines Projekt laufen mit mehreren Tabs. Wo einer der Tabs ein kleines Malprogramm werden soll. Möchte das ganze auf Graphics2D und den Shapes aufbauen.
Hatte in Graphics mir ein kleines Prog schon geschrieben gehabt, wo ich ein rechteck mit der maus von startPunkt -> endpunkt zeichnen konnte und es auch in den negativen bereich zeichnen konnte, also wenn ich die maus dann nach links oben gezogen habe waren die werte negativ, aber er hat es einfach gezeichnet.
Hier ein KSKB dazu ohne Shapes :
[Java]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DynamicDraw extends JFrame implements MouseListener, MouseMotionListener{
private int xPos = 0, yPos = 0, mXpos = 0, mYpos = 0;
private JPanel pane;
DynamicDraw(String title){
super(title);
pane = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
if(xPos < mXpos && yPos < mYpos){
g2d.drawRect(xPos, yPos, mXpos - xPos, mYpos - yPos);
}
if(xPos > mXpos && yPos > mYpos){
g2d.drawRect(mXpos, mYpos, xPos - mXpos, yPos - mYpos);
}
if(xPos < mXpos && yPos > mYpos){
g2d.drawRect(xPos, mYpos, mXpos - xPos, yPos - mYpos);
}
if(xPos > mXpos && yPos < mYpos){
g2d.drawRect(mXpos, yPos, xPos - mXpos, mYpos - yPos);
}
}
};
pane.addMouseListener(this);
pane.addMouseMotionListener(this);
add(pane);
}
public void mouseDragged(MouseEvent e) {
mXpos = e.getX();
mYpos = e.getY();
repaint();
}
public void mousePressed(MouseEvent e) {
xPos = e.getX();
yPos = e.getY();
}
public void mouseMoved(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public static void main(String[] args){
DynamicDraw dd = new DynamicDraw("Test");
dd.setSize(500,400);
dd.setVisible(true);
}
}
[/Java]
Meine frage lautet, weis jmd wie ich dieses Verhalten mit den Shape.Rectangle2D.Float hinbekomme ?
Denn bei mir will er dies einfach nicht machen...
Hatte in Graphics mir ein kleines Prog schon geschrieben gehabt, wo ich ein rechteck mit der maus von startPunkt -> endpunkt zeichnen konnte und es auch in den negativen bereich zeichnen konnte, also wenn ich die maus dann nach links oben gezogen habe waren die werte negativ, aber er hat es einfach gezeichnet.
Hier ein KSKB dazu ohne Shapes :
[Java]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DynamicDraw extends JFrame implements MouseListener, MouseMotionListener{
private int xPos = 0, yPos = 0, mXpos = 0, mYpos = 0;
private JPanel pane;
DynamicDraw(String title){
super(title);
pane = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
if(xPos < mXpos && yPos < mYpos){
g2d.drawRect(xPos, yPos, mXpos - xPos, mYpos - yPos);
}
if(xPos > mXpos && yPos > mYpos){
g2d.drawRect(mXpos, mYpos, xPos - mXpos, yPos - mYpos);
}
if(xPos < mXpos && yPos > mYpos){
g2d.drawRect(xPos, mYpos, mXpos - xPos, yPos - mYpos);
}
if(xPos > mXpos && yPos < mYpos){
g2d.drawRect(mXpos, yPos, xPos - mXpos, mYpos - yPos);
}
}
};
pane.addMouseListener(this);
pane.addMouseMotionListener(this);
add(pane);
}
public void mouseDragged(MouseEvent e) {
mXpos = e.getX();
mYpos = e.getY();
repaint();
}
public void mousePressed(MouseEvent e) {
xPos = e.getX();
yPos = e.getY();
}
public void mouseMoved(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public static void main(String[] args){
DynamicDraw dd = new DynamicDraw("Test");
dd.setSize(500,400);
dd.setVisible(true);
}
}
[/Java]
Meine frage lautet, weis jmd wie ich dieses Verhalten mit den Shape.Rectangle2D.Float hinbekomme ?
Denn bei mir will er dies einfach nicht machen...