Thanks a lot. Here are the details:-
In the PaintButton class i have;
_________________________________________________________________________
private class MyPaintButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == square)
{
74:myPaintCanvas.setDrawMode(myPaintCanvas.mySquare);
}
________________________________________________________________________
and this is a summary of what the MyPaintCanvasClass looks like:
package MyPaintPackage;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
//import javax.swing.filechooser.FileFilter;
import javax.imageio.*;
public class MyPaintCanvas extends JPanel implements MouseListener, MouseMotionListener, Serializable
{
private File file;
JFileChooser fileChooser;
//FileExtension filter;
private Color defaultBGColour, defaultFGColour/*, canvasFGColour, canvasBGColour*/;
protected static int open_fn, save_fn;
private boolean myFillCheck;
protected final static int mySquare = 1, myOval = 2, myRoundRect = 3, myLine = 4, myFreeH = 6,
fillMySquare = 11, fillMyOval = 22, fillMyRoundRect = 33;
private int x1, y1, x2, y2, lineX1, lineX2, lineY1, lineY2, drawMode = 0;
protected static Vector squareV, ovalV, rRV, lineV, freeHV, vector, fileV,
fillMySquareV, fillMyOvalV, fillMyRoundRectV;
/**
* Method MyPaintCanvas
*
*
*/
public MyPaintCanvas()
{
// TODO: Add your code here
squareV = new Vector();
fillMySquareV = new Vector();
ovalV = new Vector();
fillMyOvalV = new Vector();
rRV = new Vector();
fillMyRoundRectV = new Vector();
lineV = new Vector();
freeHV = new Vector();
fileV = new Vector();
addMouseListener(this);
addMouseMotionListener(this);
defaultFGColour = Color.black;
defaultBGColour = Color.white;
setBackground(defaultBGColour);
repaint();
}//End of constructor
public void mouseClicked(MouseEvent me)
{
}
public void mouseEntered(MouseEvent me)
{
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
}
public void mouseExited(MouseEvent me)
{
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mousePressed(MouseEvent me)
{
x1 = lineX1 = lineX2 = me.getX();
y1 = lineY1 = lineY2 = me.getY();
}
public void mouseReleased(MouseEvent me)
{
if (drawMode == mySquare)
{
if (myFillCheck)
{
if(x1 > me.getX() || y1 > me.getY())
{
fillMySquareV.add(new MyCoordinates(me.getX(), me.getY(), x1, y1, defaultFGColour));
}else{
fillMySquareV.add(new MyCoordinates(x1, y1, me.getX(), me.getY(), defaultFGColour));
}
}else{
if(x1 > me.getX() || y1 > me.getY())
{
fillMySquareV.add(new MyCoordinates(me.getX(), me.getY(), x1, y1, defaultFGColour));
}else{
fillMySquareV.add(new MyCoordinates(x1, y1, me.getX(), me.getY(), defaultFGColour));
}
}
}
repaint();
}
public void mouseMoved(MouseEvent me)
{
}
/*=============================================================================*/
public void paintComponent(Graphics g)
{
super.paintComponent(g);
redrawVectorBuffer(g);
g.setColor(defaultFGColour);
if (drawMode == mySquare)
{
if(myFillCheck)
{
if(x1 > x2 || y1 > y2)
g.fillRect(x2,y2,x1-x2,y1-y2);
else
g.fillRect(x1,y1,x2-x1,y2-y1);
}else{
if(x1 > x2 || y1 > y2)
g.drawRect (x2,y2,x1-x2,y1-y2);
else
g.drawRect (x1,y1,x2-x1,y2-y1);
}
}
public void setDrawMode(int d)
{
drawMode = d;
}
public int getDrawMode()
{
return drawMode;
}
private RenderedImage myCreateImage()
{
BufferedImage bufferedImage = new BufferedImage(600,390, BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();
redrawVectorBuffer(g);
g.dispose();
return bufferedImage;
}
private void redrawVectorBuffer(Graphics g)
{
for (int i=0;i<squareV.size();i++){
g.setColor(((MyCoordinates)squareV.elementAt(i)).colour());
g.drawRect(((MyCoordinates)squareV.elementAt(i)).getX1(),((MyCoordinates)squareV.elementAt(i)).getY1(),((MyCoordinates)squareV.elementAt(i)).getX2()-((MyCoordinates)squareV.elementAt(i)).getX1(),((MyCoordinates)squareV.elementAt(i)).getY2()-((MyCoordinates)squareV.elementAt(i)).getY1());
}
}
public class MyCoordinates implements Serializable
{
int x1, y1, x2, y2;
Color fColor;
public MyCoordinates(int xx1, int yy1, int xx2, int yy2, Color color)
{
x1 = xx1;
y1 = yy1;
x2 = xx2;
y2 = yy2;
fColor = color;
}
public Color colour()
{
return fColor;
}
public int getX1()
{
return x1;
}
public int getX2()
{
return x2;
}
public int getY1()
{
return y1;
}
public int getY2()
{
return y2;
}
}//End of class [MyCoordinates]
} //End of class