Wildcard
Top Contributor
typo...Sindbad1983 hat gesagt.:du meinst wohl setBounds(int x, int y...etc) oder?
weil bei setBound gibts nur setBound(true) !?!
typo...Sindbad1983 hat gesagt.:du meinst wohl setBounds(int x, int y...etc) oder?
weil bei setBound gibts nur setBound(true) !?!
..geildurch Hast und Unachtsamkeit.
r.setBounds(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
Denk auch dran das jede JComponent ihr eigenes Koordinatensystem hat,
setBounds(0,0,600,600);
g.fillRect(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
r.setBounds(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
import java.awt.*;
import javax.swing.*;
public class Rectangle{
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public void getpressedXY(int x, int y){
pressedX=x;
pressedY=y;
}
public void getreleasedXY(int x, int y){
releasedX=x;
releasedY=y;
}
public void paintComponent(final java.awt.Graphics g1 ) {
final java.awt.Graphics2D g =( java.awt.Graphics2D )g1;
g.setColor(Color.black);
g.fillRect(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
}
}
public class PaintFrame extends JFrame implements ActionListener{
public PaintFrame(String titel){
super(titel);
Container c=getContentPane();
Zeichenflaeche zeichenflaeche=new Zeichenflaeche();
c.add(zeichenflaeche);
System.out.println("bbbb");
}
public void makeMenu(){
MenuBar bar=new MenuBar();
Menu m = new Menu("Look & Feel");
m.add(new MenuItem("Rot"));
m.add(new MenuItem("Blau"));
m.add(new MenuItem("Grün"));
bar.add(m);
setMenuBar(bar);
System.out.println("ccc");
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String [] args){
PaintFrame frame=new PaintFrame("Zeichenprogramm");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setLocation(300,300);
frame.setVisible(true);
frame.makeMenu();
}
}
public class Zeichenflaeche extends JPanel implements MouseListener, MouseMotionListener{
Rectangle r;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche(){
System.out.println("eee");
setBackground(Color.RED);
setPreferredSize( new java.awt.Dimension(600,600));
this.addMouseListener(this);
this.addMouseMotionListener(this);
System.out.println("ddd");
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
r=new Rectangle();
System.out.println("aaaaa");
pressedX=getX();
pressedY=getY();
r.getpressedXY(pressedX,pressedY);
System.out.println("zzzz");
}
public void mouseReleased(MouseEvent e) {
System.out.println("yyyyy");
releasedX=getX();
releasedY=getY();
r.getreleasedXY(releasedX,releasedY);
repaint();
System.out.println("ffff");
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
}
/**
*
*/
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* @author Wildcard
* created at 08.06.2005
*/
public class DrawingFrame extends JFrame
{
private DrawingPanel panel;
public DrawingFrame()
{
panel = new DrawingPanel();
getContentPane().add(panel);
panel.setSize(getContentPane().getSize());
panel.setFocusable(true);
panel.requestFocus();
}
/**
* @param args
*/
public static void main(String[] args)
{
DrawingFrame frame = new DrawingFrame();
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class DrawingPanel extends JPanel implements MouseListener
{
private ArrayList children = new ArrayList();
private Point clickPoint;
public DrawingPanel()
{
addMouseListener(this);
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
drawChildren(g);
}
private void addFigure(Figure f)
{
children.add(f);
}
/**
* @param g
*/
private void drawChildren(Graphics g)
{
Iterator it = children.iterator();
while (it.hasNext())
{
Figure child = (Figure) it.next();
child.draw(g);
}
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
public void mouseClicked(MouseEvent e)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
public void mousePressed(MouseEvent e)
{
clickPoint = e.getPoint();
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
public void mouseReleased(MouseEvent e)
{
MyRectangle rect = new MyRectangle();
Rectangle bounds = new Rectangle(clickPoint);
bounds.add(e.getPoint());
rect.setBounds(bounds);
addFigure(rect);
repaint();
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
*/
public void mouseEntered(MouseEvent e)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
*/
public void mouseExited(MouseEvent e)
{
// TODO Auto-generated method stub
}
}
abstract class Figure
{
protected Rectangle bounds;
protected Point location;
abstract public void draw(Graphics g);
public Rectangle getBounds()
{
return bounds;
}
public void setBounds(Rectangle bounds)
{
this.bounds = bounds;
}
public Point getLocation()
{
return location;
}
public void setLocation(Point location)
{
this.location = location;
}
}
class MyRectangle extends Figure
{
/* (non-Javadoc)
* @see Anfaenger.Sindbad.Figure#draw(java.awt.Graphics)
*/
@Override
public void draw(Graphics g)
{
g.drawRect(bounds.x,bounds.y,bounds.width,bounds.height);
}
}
Ist das oben dein aktueller Code?Sindbad1983 hat gesagt.:Aber weißt du, wo bei mir der Fehler liegt?
Das wär auch so interessant für mich!
Da kann ja nicht mehr viel fehlen!! oder schon?
je größer die herausforderung, desto mehr lernt man dabei :wink:Sindbad1983 hat gesagt.:wahnsinn..das hast du echt klasse gemacht...
ich versteh alles..ist irgendwie ganz einfach..und trotzdem hab ich da solche Probleme..
das wird noch ein steiniger Weg... :-(
wie lang hast du da jetzt gebraucht für?
public class PaintFrame extends JFrame implements ActionListener{
private Zeichenflaeche zeichenflaeche;
public PaintFrame(String titel){
super(titel);
Container c=getContentPane();
zeichenflaeche=new Zeichenflaeche();
c.add(zeichenflaeche);
zeichenflaeche.setFocusable(true);
zeichenflaeche.requestFocus();
System.out.println("bbbb");
}
public PaintFrame(String titel){
super(titel);
Container c=getContentPane();
Zeichenflaeche zeichenflaeche=new Zeichenflaeche();
c.add(zeichenflaeche);
zeichenflaeche.setFocusable(true);
zeichenflaeche.requestFocus();
System.out.println("bbbb");
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
drawChildren(g);
}
public void mouseReleased(MouseEvent e)
{
MyRectangle rect = new MyRectangle();
Rectangle bounds = new Rectangle(clickPoint);
bounds.add(e.getPoint());
rect.setBounds(bounds);
addFigure(rect);
repaint();
}
Figure f=new Figure()
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;
public class Zeichenflaeche extends JPanel implements MouseListener, KeyListener{
private ArrayList list;
Figure f;
int ergebnis;
Point startpoint;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche(){
list=new ArrayList();
setPreferredSize( new java.awt.Dimension(600,600));
this.addMouseListener(this);
this.addKeyListener(this);
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
drawChildren(g);
}
public void drawChildren(Graphics g){
Iterator it=list.iterator();
while(it.hasNext()){
Figure child=(Figure)it.next();
child.draw(g);
}
}
public void addFigure(Figure f){
list.add(f);
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
startpoint=e.getPoint();
System.out.println("zzzz");
}
public void mouseReleased(MouseEvent e) {
switch(ergebnis){
case 1:
Figure f=new Circle();
Point zielpoint=e.getPoint();
f.setXY(startpoint.x, startpoint.y,zielpoint.x,zielpoint.y);
addFigure(f);
repaint();
break;
case 2:
Figure fg=new Rectangle();
Point zielpoint2=e.getPoint();
fg.setXY(startpoint.x, startpoint.y,zielpoint2.x,zielpoint2.y);
addFigure(fg);
repaint();
break;
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyTyped(KeyEvent e) {
char key=e.getKeyChar();
if(key==KeyEvent.VK_ENTER){
makeCircle();
System.out.println("Enter");
}
else if(key==KeyEvent.VK_SPACE){
makeRectangle();
System.out.println("Leertaste");
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public int makeCircle(){
System.out.println("makeCircle wurde aufgerufen");
ergebnis=1;
return ergebnis;
}
public int makeRectangle(){
System.out.println("makeRectangle wurde aufgerufen");
ergebnis=2;
return ergebnis;
}
}
public void setColor(Color c){
this.c=c;
}
public class PaintFrame extends JFrame implements ActionListener{
private Zeichenflaeche zeichenflaeche;
ActionListener listener;
public PaintFrame(String titel){
super(titel);
zeichenflaeche=new Zeichenflaeche();
getContentPane().add(zeichenflaeche);
zeichenflaeche.setSize(getContentPane().getSize());
zeichenflaeche.setFocusable(true);
zeichenflaeche.requestFocus();
}
public void makeMenu(){
MenuBar bar=new MenuBar();
Menu m = new Menu("Look & Feel");
MenuItem red=new MenuItem("Red");
MenuItem blue=new MenuItem("Blue");
MenuItem green=new MenuItem("Green");
m.add(red);
red.addActionListener(this);
m.add(blue);
blue.addActionListener(this);
m.add(green);
green.addActionListener(this);
bar.add(m);
setMenuBar(bar);
System.out.println("ccc");
}
public void actionPerformed(ActionEvent e) {
String me=e.getActionCommand();
if(me.equals("Red")){
System.out.println("Rot wurde ausgewählt");
Farbe.c=Color.RED;
}
else if(me.equals("Blue")){
System.out.println("Blau wurde ausgewählt");
Farbe.c=Color.BLUE;
}
else if(me.equals("Green")){
System.out.println("Grün wurde ausgewählt");
Farbe.c=Color.GREEN;
}
}
public static void main(String [] args){
PaintFrame frame=new PaintFrame("Zeichenprogramm");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.makeMenu();
}
}
public class Zeichenflaeche extends JPanel implements MouseListener,KeyListener{
private ArrayList list;
Figure f;
int ergebnis;
Farbe farbe;
Point startpoint;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche(){
list=new ArrayList();
setPreferredSize( new java.awt.Dimension(600,600));
this.addMouseListener(this);
this.addKeyListener(this);
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
drawChildren(g);
}
public void drawChildren(Graphics g){
Iterator it=list.iterator();
while(it.hasNext()){
Figure child=(Figure)it.next();
child.draw(g);
}
}
public void addFigure(Figure f){
list.add(f);
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
startpoint=e.getPoint();
System.out.println("zzzz");
}
public void mouseReleased(MouseEvent e) {
System.out.println("Die Maus wurde gedrückt");
switch(ergebnis){
case 1:
Figure f=new Circle();
f.setColor(Farbe.c);
Point zielpoint=e.getPoint();
f.setXY(startpoint.x, startpoint.y,zielpoint.x,zielpoint.y);
addFigure(f);
repaint();
break;
case 2:
Figure fg=new Rectangle();
fg.setColor(Farbe.c);
Point zielpoint2=e.getPoint();
fg.setXY(startpoint.x, startpoint.y,zielpoint2.x,zielpoint2.y);
addFigure(fg);
repaint();
break;
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyTyped(KeyEvent e) {
char key=e.getKeyChar();
if(key==KeyEvent.VK_ENTER){
makeCircle();
System.out.println("Enter");
}
else if(key==KeyEvent.VK_SPACE){
makeRectangle();
System.out.println("Leertaste");
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public int makeCircle(){
System.out.println("makeCircle wurde aufgerufen");
ergebnis=1;
return ergebnis;
}
public int makeRectangle(){
System.out.println("makeRectangle wurde aufgerufen");
ergebnis=2;
return ergebnis;
}
}
import java.awt.*;
import javax.swing.*;
public class Farbe {
static Color c;
}
public class Zeichenflaeche extends JPanel implements MouseListener, KeyListener{
ArrayList list;
int ergebnis=0;
Point startpoint;
AbstractFigureFactory factory;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche(){
setBackground(Color.WHITE);
this.addMouseListener(this);
this.addKeyListener(this);
list=new ArrayList();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
drawChildren(g);
}
public void drawChildren(Graphics g){
Iterator it=list.iterator();
while(it.hasNext()){
Figure child=(Figure)it.next();
child.draw(g);
}
}
public void addFigure(Figure f){
list.add(f);
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
startpoint=e.getPoint();
System.out.println("zzzz");
}
public void mouseReleased(MouseEvent e) {
System.out.println("Die Maus wurde gedrückt");
switch(ergebnis){
case 1:
factory=new CircleFactory();
Figure f=factory.createFigure();
f.setColor(Farbe.c);
Point zielpoint=e.getPoint();
f.setXY(startpoint.x, startpoint.y,zielpoint.x,zielpoint.y);
addFigure(f);
repaint();
break;
case 2:
factory=new RectangleFactory();
Figure fg=factory.createFigure();
fg.setColor(Farbe.c);
Point zielpoint2=e.getPoint();
fg.setXY(startpoint.x, startpoint.y,zielpoint2.x,zielpoint2.y);
addFigure(fg);
repaint();
break;
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyTyped(KeyEvent e) {
char key=e.getKeyChar();
if(key==KeyEvent.VK_ENTER){
makeFigure1();
System.out.println("Enter");
}
else if(key==KeyEvent.VK_SPACE){
makeFigure2();
System.out.println("Leertaste");
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public int makeFigure1(){
ergebnis=1;
return ergebnis;
}
public int makeFigure2(){
ergebnis=2;
return ergebnis;
}
}
import java.awt.Color;
import java.awt.Point;
public abstract class AbstractFigureFactory {
AbstractFigureFactory factory;
public abstract Figure createRectangle(int x, int y, int w, int h, Color c);
public abstract Figure createCircle(int x, int y, int w, int h, Color c);
public AbstractFigureFactory getInstance(){
return factory;
}
public void setCurrentFactory(AbstractFigureFactory factory){
this.factory=factory;
}
}
public class ColoredFactory extends AbstractFigureFactory{
int pressedX;
int pressedY;
int releasedX;
int releasedY;
Color c;
public Figure createRectangle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Rectangle(pressedX,pressedY,releasedX,releasedY, c);
}
public Figure createCircle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Circle(pressedX,pressedY,releasedX,releasedY, c);
}
}
public class BlackAndWhiteFactory extends ColoredFactory {
public Figure createRectangle(int x, int y, int w, int h, Color c) {
if(c!=Color.black){
System.out.println("Hier wurde eine ColorException ausgelöst");
return null;
}
super.createRectangle(h, h, h, h, c);
return new Rectangle(pressedX,pressedY,releasedX,releasedY, Color.black);
}
public Figure createCircle(int x, int y, int w, int h, Color c) {
if(c!=Color.black){
System.out.println("Hier wurde eine ColorException ausgelöst");
return null;
}
super.createCircle(h, h, h, h, c);
return new Circle(pressedX,pressedY,releasedX,releasedY, Color.black);
}
}
public abstract class Figure {
int pressedX;
int pressedY;
int releasedX;
int releasedY;
Color c;
public abstract void draw (Graphics g);
}
public class Rectangle extends Figure {
public Rectangle(int x, int y, int w, int h, Color c){
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
}
public void draw(Graphics g){
g.setColor(this.c);
g.drawRect(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
}
}
public class Circle extends Figure {
public Circle (int x, int y, int w, int h, Color c){
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
}
public void draw(Graphics g) {
g.setColor(this.c);
g.fillOval(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
}
}
public class PaintFrame extends JFrame implements ActionListener{
AbstractFigureFactory factory;
private Zeichenflaeche zeichenflaeche;
ActionListener listener;
public PaintFrame(String titel){
super(titel);
zeichenflaeche=new Zeichenflaeche();
getContentPane().add(zeichenflaeche);
zeichenflaeche.setSize(getContentPane().getSize());
zeichenflaeche.setFocusable(true);
zeichenflaeche.requestFocus();
}
public void makeMenu(){
MenuBar bar=new MenuBar();
Menu m = new Menu("Look & Feel");
MenuItem red=new MenuItem("Red");
MenuItem blue=new MenuItem("Blue");
MenuItem green=new MenuItem("Green");
m.add(red);
red.addActionListener(this);
m.add(blue);
blue.addActionListener(this);
m.add(green);
green.addActionListener(this);
bar.add(m);
setMenuBar(bar);
System.out.println("ccc");
}
public void actionPerformed(ActionEvent e) {
//das ist neu!!
factory.setCurrentFactory(new ColoredFactory());
String me=e.getActionCommand();
if(me.equals("Red")){
System.out.println("Rot wurde ausgewählt");
}
else if(me.equals("Blue")){
System.out.println("Blau wurde ausgewählt");
}
else if(me.equals("Green")){
System.out.println("Grün wurde ausgewählt");
}
}
public static void main(String [] args){
PaintFrame frame=new PaintFrame("Zeichenprogramm");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.makeMenu();
}
}
public class ColoredFactory extends AbstractFigureFactory{
//entfern die Klassenvariablen, die sind unnötig.
int pressedX;
int pressedY;
int releasedX;
int releasedY;
Color c;
public Figure createRectangle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Rectangle(pressedX,pressedY,releasedX,releasedY, c);
}
public Figure createCircle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Circle(pressedX,pressedY,releasedX,releasedY, c);
}
}
class Zeichenflaeche extends JPanel implements MouseListener , KeyListener
{
private ArrayList children = new ArrayList();
private Point startpoint;
private Point endpoint;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche()
{
addMouseListener(this);
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
drawChildren(g);
}
private void addFigure(Figure f)
{
children.add(f);
}
private void drawChildren(Graphics g)
{
Iterator it = children.iterator();
while (it.hasNext())
{
Figure child = (Figure) it.next();
child.draw(g);
}
}
public void mouseClicked(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
startpoint = e.getPoint();
pressedX=startpoint.x;
pressedY=startpoint.y;
}
public void mouseReleased(MouseEvent e){
endpoint=e.getPoint();
releasedX=endpoint.x;
releasedY=endpoint.y;
repaint();
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
char test=e.getKeyChar();
if(test==KeyEvent.VK_ENTER){
System.out.println("Enter");
addFigure(AbstractFigureFactory.getInstance().createCircle(pressedX,pressedY,releasedX,releasedY,Color.blue));
}
else if(test==KeyEvent.VK_SPACE){
System.out.println("Leertaste");
addFigure(AbstractFigureFactory.getInstance().createRectangle(pressedX,pressedY,releasedX,releasedY,Color.blue));
}
repaint();
}
public void keyReleased(KeyEvent e) {
}
}
import java.awt.Color;
import java.awt.Point;
public abstract class AbstractFigureFactory {
private static AbstractFigureFactory factory;
Color c;
public abstract Figure createRectangle(int x, int y, int w, int h, Color c);
public abstract Figure createCircle(int x, int y, int w, int h, Color c);
public static AbstractFigureFactory getInstance(){
return factory;
}
public static void setCurrentFactory(AbstractFigureFactory factory){
AbstractFigureFactory.factory=factory;
}
}
public class ColoredFactory extends AbstractFigureFactory{
int pressedX;
int pressedY;
int releasedX;
int releasedY;
Color c;
public static final ColoredFactory INSTANCE=new ColoredFactory();
public ColoredFactory(){
}
public Figure createRectangle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Rectangle(pressedX,pressedY,releasedX,releasedY, c);
}
public Figure createCircle(int x, int y, int w, int h, Color c) {
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
return new Circle(pressedX,pressedY,releasedX,releasedY, c);
}
}
public class BlackAndWhiteFactory extends ColoredFactory {
public static final BlackAndWhiteFactory INSTANCE=new BlackAndWhiteFactory();
public BlackAndWhiteFactory(){
}
public Figure createRectangle(int x, int y, int w, int h, Color c) {
if(c!=Color.black){
System.out.println("Hier wurde eine ColorException ausgelöst");
return null;
}
super.createRectangle(h, h, h, h, c);
return new Rectangle(pressedX,pressedY,releasedX,releasedY, Color.black);
}
public Figure createCircle(int x, int y, int w, int h, Color c) {
if(c!=Color.black){
System.out.println("Hier wurde eine ColorException ausgelöst");
return null;
}
super.createCircle(h, h, h, h, c);
return new Circle(pressedX,pressedY,releasedX,releasedY, Color.black);
}
}
public abstract class Figure {
int pressedX;
int pressedY;
int releasedX;
int releasedY;
Color c;
public abstract void draw (Graphics g);
}
public class Rectangle extends Figure {
public Rectangle(int x, int y, int w, int h, Color c){
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
}
public void draw(Graphics g){
g.setColor(this.c);
g.drawRect(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
}
}
public class Circle extends Figure {
public Circle (int x, int y, int w, int h, Color c){
this.pressedX=x;
this.pressedY=y;
this.releasedX=w;
this.releasedY=h;
this.c=c;
}
public void draw(Graphics g) {
g.setColor(this.c);
g.fillOval(pressedX,pressedY,releasedX-pressedX,releasedY-pressedY);
}
}
public class PaintFrame extends JFrame implements ActionListener{
AbstractFigureFactory factory;
private Zeichenflaeche zeichenflaeche;
ActionListener listener;
public PaintFrame(String titel){
super(titel);
factory.setCurrentFactory(new BlackAndWhiteFactory());
zeichenflaeche=new Zeichenflaeche();
getContentPane().add(zeichenflaeche);
zeichenflaeche.setSize(getContentPane().getSize());
zeichenflaeche.setFocusable(true);
zeichenflaeche.requestFocus();
}
public void makeMenu(){
MenuBar bar=new MenuBar();
Menu m = new Menu("Look & Feel");
MenuItem red=new MenuItem("Red");
MenuItem blue=new MenuItem("Blue");
MenuItem green=new MenuItem("Green");
m.add(red);
red.addActionListener(this);
m.add(blue);
blue.addActionListener(this);
m.add(green);
green.addActionListener(this);
bar.add(m);
setMenuBar(bar);
System.out.println("ccc");
}
public void actionPerformed(ActionEvent e) {
factory.setCurrentFactory(new ColoredFactory());
String me=e.getActionCommand();
if(me.equals("Red")){
System.out.println("Rot wurde ausgewählt");
}
else if(me.equals("Blue")){
System.out.println("Blau wurde ausgewählt");
}
else if(me.equals("Green")){
System.out.println("Grün wurde ausgewählt");
}
}
public static void main(String [] args){
PaintFrame frame=new PaintFrame("Zeichenprogramm");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.makeMenu();
}
}
class Zeichenflaeche extends JPanel implements MouseListener , KeyListener
{
private ArrayList children = new ArrayList();
private Point startpoint;
private Point endpoint;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche()
{
addMouseListener(this);
addKeyListener (this);
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
drawChildren(g);
}
private void addFigure(Figure f)
{
children.add(f);
}
private void drawChildren(Graphics g)
{
Iterator it = children.iterator();
while (it.hasNext())
{
Figure child = (Figure) it.next();
child.draw(g);
}
}
public void mouseClicked(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
startpoint = e.getPoint();
pressedX=startpoint.x;
pressedY=startpoint.y;
}
public void mouseReleased(MouseEvent e){
endpoint=e.getPoint();
releasedX=endpoint.x;
releasedY=endpoint.y;
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
char test=e.getKeyChar();
if(test==KeyEvent.VK_ENTER){
System.out.println("Enter");
addFigure(AbstractFigureFactory.getInstance().createCircle(pressedX,pressedY,releasedX,releasedY,Color.blue));
}
else if(test==KeyEvent.VK_SPACE){
System.out.println("Leertaste");
addFigure(AbstractFigureFactory.getInstance().createRectangle(pressedX,pressedY,releasedX,releasedY,Color.blue));
}
repaint();
}
public void keyReleased(KeyEvent e) {
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JPanel;
/**
*
*/
/**
* @author Wildcard created at 14.06.2005
*/
class Zeichenflaeche extends JPanel
{
private ArrayList children = new ArrayList();
private Point startpoint;
private Point endpoint;
private static final int RECTANGLE = 1;
private static final int CIRCLE = RECTANGLE + 1;
/** per default */
private int choice = RECTANGLE;
int pressedX;
int pressedY;
int releasedX;
int releasedY;
public Zeichenflaeche()
{
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e)
{
endpoint = e.getPoint();
releasedX = endpoint.x;
releasedY = endpoint.y;
if (choice == RECTANGLE)
addFigure(AbstractFigureFactory.getInstance()
.createRectangle(pressedX, pressedY, releasedX,
releasedY, Color.blue));
else if (choice == CIRCLE)
addFigure(AbstractFigureFactory.getInstance().createCircle(
pressedX, pressedY, releasedX, releasedY,
Color.blue));
repaint();
}
public void mousePressed(MouseEvent e)
{
startpoint = e.getPoint();
pressedX = startpoint.x;
pressedY = startpoint.y;
}
});
addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e)
{
if (e.getKeyChar() == KeyEvent.VK_ENTER)
choice = CIRCLE;
else if (e.getKeyChar() == KeyEvent.VK_SPACE)
choice = RECTANGLE;
}
});
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
drawChildren(g);
}
private void addFigure(Figure f)
{
children.add(f);
}
private void drawChildren(Graphics g)
{
Iterator it = children.iterator();
while (it.hasNext())
{
Figure child = (Figure) it.next();
child.draw(g);
}
}
}