View
215
Download
1
Embed Size (px)
Citation preview
Schets: klasse-ontwerp (1)Component
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
SchetsApplet
SchetsApplic
SchetsCanv
SchetsComponent
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
class SchetsApplic extends JFrame{ © SchetsApplic( )
{ ……add( new SchetsApplet(…) … );}public static void main (String [] p){ new SchetsApplic().setVisible(true);}
}
Schets: klasse-ontwerp (2)
SchetsApplet
SchetsApplic
SchetsCanv
SchetsComponent
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
class SchetsApplet extends JApplet{ SchetsCanv canvas;
Tool currentTool;public void init(){ canvas = new SchetsCanv();
……add(canvas, ….CENTER); …………}
}
Schets: klasse-ontwerp (3)
SchetsApplet
SchetsApplic
SchetsCanv
SchetsComponent
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
class SchetsCanv extends JPanel{ Schets schets;
Color penkleur = Color.BLACK; © SchetsCanv(){ schets = new Schets(); }public void paint(Graphics g){ schets.teken(g); }
}
Schets: klasse-ontwerp (4)
SchetsApplet
SchetsApplic
SchetsCanv
SchetsComponent
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
class Schets{ BitMap bitmap;
© Schets(){ bitmap = new BitMap(……); }public void teken(Graphics g){ g . drawImage(bitmap,0,0,…); }
}
Opbouw GUIclass SchetsApplet extends JApplet{ public void init() { canvas = new SchetsCanv();
}
……add( canvas , ….CENTER);
canvas.addMouseListener (this);canvas.addMouseMotionListener (this);canvas.addKeyListener (this);
……add( maakToolBox ( ), ….WEST );……add( maakCtrlPanel ( ), ….SOUTH );……add( maakMenuBar ( ), ….NORTH );
Collection<ToolAktie> t = maakToolAkties();Collection<ControlAktie> c = maakControlAkties();
t ct , c
implements ML, MML, KLSchetsCanv canvas; Tool currentTool;
Swing-akties
AbstractAction
AboutAktie
ControlAktie
ToolAktie
kan reagerenop een aktie
actionPerformed
kent extraeigenschappen
van de aktiegetValueputValue
maakt Actionsmet standaard-eigenschappen(naam, icon, …)
ActionListener
Action
Schets-akties (1)AboutAktie
ControlAktie
ToolAktie
AbstractAction
ActionListener
Action
class AboutAktie extends AbstractAction{
}
public void actionPerformed(ActionEvent e){ …showMessageDialog(…, “SchetsEditor versie 1”, …);}
© AboutAktie ( ){ super ( “About” );}
Schets-akties (2)AboutAktie
ControlAktie
ToolAktie
AbstractAction
ActionListener
Action
class ControlAktie extends AbstractAction{
}
public void actionPerformed(ActionEvent e){ }
© ControlAktie (String naam ){ super ( naam );
}
String naam = this.getValue(Action.NAME);if (naam.equals(“clear”)) canvas.clear(); else …
SchetsCanv canvas;
canvas = c;
, SchetsCanv c )
Schets-akties (3)AboutAktie
ControlAktie
ToolAktie
AbstractAction
ActionListener
Action
class ToolAktie extends AbstractAction{
}
public void actionPerformed(ActionEvent e){ }
© ToolAktie (String naam ){ super ( naam );
}
applet . setCurrentTool (tool);
SchetsApplet applet; Tool tool;
applet = a; tool = t;
, Applet a, Tool t ), Icon ic ), ic );
Opbouw GUIclass SchetsApplet extends JApplet{ public void init() { canvas = new SchetsCanv();
}
……add( canvas , ….CENTER);
canvas.addMouseListener (this);canvas.addMouseMotionListener (this);canvas.addKeyListener (this);
……add( maakToolBox ( ), ….WEST );……add( maakCtrlPanel ( ), ….SOUTH );……add( maakMenuBar ( ), ….NORTH );
Collection<ToolAktie> t = maakToolAkties();Collection<ControlAktie> c = maakControlAkties();
t ct , c
implements ML, MML, KLSchetsCanv canvas; Tool currentTool;
Maken van de aktiesclass SchetsApplet extends JApplet{ private Collection<ControlAktie> maakControlAkties() {
}
LinkedList<ControlAktie> res;res = new LinkedList<ControlAktie>();
implements ML, MML, KL
return res;
res.add( new ControlAktie( ) );res.add( new ControlAktie( ) );
“clear” , canvas“rotate” , canvas
Maken van de aktiesclass SchetsApplet extends JApplet{ private Collection<ToolAktie> maakToolAkties() {
}
LinkedList<ToolAktie> res;res = new LinkedList<ToolAktie>();
implements ML, MML, KL
return res;
res.add( new ToolAktie( ) );res.add( new ToolAktie( ) );res.add( new ToolAktie( ) );res.add( new ToolAktie( ) );res.add( new ToolAktie( ) );res.add( new ToolAktie( ) );
“pen”, this“lijn” , this“rh” , this“vul” , this“tekst” ,
this“gum”,
this
, new PenTool(), new LijnTool(), new RectTool(), new FillRTool(), new TekstTool(), new GumTool()
ToolSchetsApplet
Opbouw GUIclass SchetsApplet extends JApplet{ public void init() { canvas = new SchetsCanv();
}
……add( canvas , ….CENTER);
canvas.addMouseListener (this);canvas.addMouseMotionListener (this);canvas.addKeyListener (this);
……add( maakToolBox ( ), ….WEST );……add( maakCtrlPanel ( ), ….SOUTH );……add( maakMenuBar ( ), ….NORTH );
Collection<ToolAktie> t = maakToolAkties();Collection<ControlAktie> c = maakControlAkties();
t ct , c
implements ML, MML, KLSchetsCanv canvas; Tool currentTool;
Listenersclass SchetsApplet extends JApplet{
}
public void mousePressed(MouseEvent e){
}
implements ML, MML, KLSchetsCanv canvas; Tool currentTool;
currentTool . muisIngedrukt( e.getPoint() );canvas ,
public void mouseReleased(MouseEvent e){ currentTool . muisLosgelaten( canvas , e.getPoint() );}………………
dat moet een Tooldus kunnen!
Schets-tools (1)
Tool
interface Tool {
}
void muisIngedrukt ( SchetsCanv c, Point p) ;
void muisLosgelaten ( SchetsCanv c, Point p) ;
void muisVersleept ( SchetsCanv c, Point p ) ;
void letterIngetikt ( SchetsCanv c, char k) ;
Schets-tools (2)
ToolStartpunt
Tool
abstract class StartpuntTool implements Tool {
}
void muisIngedrukt ( SchetsCanv c, Point p){
startpunt = p;}
Point startpunt ;
Schets-tools (3)
Tool
TekstTool
StartpuntTool
class TekstTool extends StartpuntTool {
}
void letterIngetikt ( SchetsCanv canv, char c){
}
Graphics g = canv . getGraphics();g . drawString( “”+c, startpunt.x, startpunt.y);startpunt.x += ……c….width;
void muisVersleept ( SchetsCanv c, Point p) { }void muisLosgelaten( SchetsCanv c, Point p) { }
Schets-tools (4)
Tool
TekstTool
TweepuntTool
StartpuntTool
abstract class TweepuntTool extends StartpuntTool {
}
void muisVersleept ( SchetsCanv canv, Point p){
}
Graphics g = canv . getGraphics();this . tekenContour(g, startpunt, p);
abstract void tekenContour(Graphics g, Point p1, Point p2) ;
void muisLosgelaten ( SchetsCanv canv, Point p){ Graphics g = canv . getBitmapGraphics(); this . tekenFiguur(g, startpunt, p);}
void tekenFiguur(Graphics g, Point p1, Point p2) { tekenContour(g, p1, p2);}
Schets-tools (5)
Tool RectTool
TekstTool
TweepuntTool
StartpuntTool
class RectTool extends TweepuntTool {
}
void tekenContour ( Graphics g, Point p1, Point p2 ){
}
Dimension afstand = puntAfstand(p1, p2);g . drawRect( p1.x, p1.y , afstand.w, afstand.h );
Schets-tools (6)
Tool RectTool FillTool
TekstTool
TweepuntTool
StartpuntTool
class FillTool extends RectTool {
}
void tekenFiguur ( Graphics g, Point p1, Point p2 ){
}
Dimension afstand = puntAfstand(p1, p2);g . fillRect( p1.x, p1.y , afstand.w, afstand.h );
Schets-tools (7)
Tool
LijnTool
RectTool FillTool
TekstTool
TweepuntTool
StartpuntTool
class LijnTool extends TweepuntTool {
}
void tekenContour ( Graphics g, Point p1, Point p2 ){
}
g . drawLine( p1.x, p1.y, p2.x, p2.y );
Schets-tools (8)
Tool
LijnTool
RectTool
PenTool
FillTool
TekstTool
TweepuntTool
StartpuntTool
class PenTool extends LijnTool {
}
void muisVersleept ( SchetsCanvas c, Point p ){
}
this . muisLosgelaten (c, p);this . muisIngedrukt (c, p);
Schets-tools (9)
Tool
LijnTool
RectTool
PenTool
FillTool
GumToolTekstTool
TweepuntTool
StartpuntTool
class GumTool extends PenTool {
}
void tekenContour ( Graphics g, Point p1, Point p2 ){
}
g2 . setStroke( new BasicStroke(7) );g2 . setColor (Color.WHITE );super . tekenContour (g2, p1, p2);
Graphics2D g2 = (Graphics2D) g ;
Tijdenlijk / permanent tekenenclass SchetsCanv extends JPanel{ Schets schets; Color penkleur;
}
class Schets{ BitMap bitmap;
}
void paint(Graphics g){ schets.teken(g);}
void teken(Graphics g){ g.drawImage(bitmap, …)}Graphics getBitmapGraphics()
{ g = schets.getBitmapGraphics(); g.setColor(penkleur); return g;}
Graphics getBitmapGraphics (){ return bitmap.getGraphics();}
Swing+ Schets klassen
AboutAktie
ControlAktie
ToolAktie
AbstractAction
ActionListener
ActionAbstractAction
ActionListener
Action
Component
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
SchetsApplet
SchetsApplic
SchetsCanv
SchetsComponent
Container Panel
Window
Applet
Frame
JApplet
JFrame
JComponent JPanel
Tool
LijnTool
RectTool
PenTool
FillTool
GumToolTekstTool
TweepuntTool
StartpuntTool
Icon ImageIcon
ToolIcon
TekstIcon
TweepuntIcon
Icon ImageIcon