aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes Problem with simple drawing tool Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Problem with simple drawing tool" Watch "Problem with simple drawing tool" New topic
Author

Problem with simple drawing tool

Jack Nicholas
Greenhorn

Joined: Nov 05, 2005
Posts: 6
Hi,

I know this will be a simple problem for all you Java developers out there, but how do I keep the shapes drawn in the following program on the canvas when a user clicks the mouse to draw another shape.

At the moment, each new mouse click on the canvas is simply drawing a new shape.

Also, does anyone know how to add buttons to allow a user to increase the size of the shapes before they add a new shape?

The code for this class is as follows:


import java.awt.*;
import java.awt.event.*;

public class DTF extends Frame implements WindowListener
{
DrawToolCanvas myCanvas; // member variable

public DTF()
{
setTitle("Draw Tool Frame");
addWindowListener(this);
Button square, circle;
Panel myPanel = new Panel();
square = new Button("square"); square.setActionCommand("square");
circle = new Button("circle"); circle.setActionCommand("circle");
myPanel.add(square); myPanel.add(circle);
add("South", myPanel);
DrawToolCanvas myCanvas = new DrawToolCanvas(); // local variable
// myCanvas = new DrawToolCanvas(); // member variable
add("Center", myCanvas);
square.addActionListener(myCanvas);
circle.addActionListener(myCanvas);
setSize(400,400);
setLocation(200,200);
setVisible(true);
}

public void windowClosing(WindowEvent event) { System.exit(0); }
public void windowOpened(WindowEvent event) {}
public void windowIconified(WindowEvent event) {}
public void windowDeiconified(WindowEvent event) {}
public void windowClosed(WindowEvent event) {}
public void windowActivated(WindowEvent event) {}
public void windowDeactivated(WindowEvent event) {}

public static void main(String[] args)
{
new DTF();
}
}

class DrawToolCanvas extends Canvas implements MouseListener, ActionListener
{
int x, y;
boolean drawCircle;

public DrawToolCanvas()
{
x = -40;
y = -40;
drawCircle = true;
addMouseListener(this);
}

public void paint(Graphics g)
{
super.paint(g);
if(drawCircle)
{
g.setColor(Color.blue);
g.fillOval( x, y, 40, 40 );
}
else
{
g.setColor(Color.red);
g.drawRect(x, y, 40, 40);
}
}

public void actionPerformed(ActionEvent event)
{
if (event.getActionCommand().equals("square"))
drawCircle = false;
else if (event.getActionCommand().equals("circle"))
drawCircle = true;
}

public void mousePressed(MouseEvent e)
{
x = e.getX();
y = e.getY();
repaint();
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
}

Help would really be appreciated!
Michael Dunn
Ranch Hand

Joined: Jun 09, 2003
Posts: 4632
do you still have a problem?

or is it solved?
http://www.javaworld.com/javaforums/showflat.php?Cat=&Board=javabeginner&Number=23503&page=0&view=collapsed&sb=5&o=&fpart=1
celine scarlett
Ranch Hand

Joined: Nov 06, 2005
Posts: 93
Hi,

I've managed to solve this problem now. Thanks to all for their help!!

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Problem with simple drawing tool