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
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Problem with simple drawing tool" Watch "Problem with simple drawing tool" New topic

Problem with simple drawing tool

Jack Nicholas

Joined: Nov 05, 2005
Posts: 6

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");
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);

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;

public void paint(Graphics g)
g.fillOval( x, y, 40, 40 );
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();

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?
celine scarlett
Ranch Hand

Joined: Nov 06, 2005
Posts: 93

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

I agree. Here's the link:
subject: Problem with simple drawing tool
It's not a secret anymore!