Jump to content

Java Applet problem


Recommended Posts

Hi im having to code a java applet which is a simplified version of microsoft paint. I hjave managed to code the display and eventhandling needed and am not sure about how to go about actually getting it to then paint the shapes to the drawing area.

 

I was wonmdering if someone could suggest a way to go about doing this i am not all that experienced at java and believe i am heading in the right direction however after reading many materials i am unsure on exactly how the paint function works

 

this is the code i have currently:

import java.applet.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.event.*;


public class paint extends JApplet
{
private JLabel pointerLocation;
private JPanel colorChooser,canvasArea,menuArea;
private JSlider redSlider,greenSlider,blueSlider;
private JButton lineButton,thickLineButton,circleButton,filledCircleButton,rectangleButton,fille
dRectangleButton,eraserButton;
private ImageIcon line,lineThick,circle,circleFilled,rect,rectFilled,eraser;
private String shape;
private int startx, starty, endx, endy, height, width;
public Graphics g;

public void init()
{
 Container content = getContentPane();
 
 //Create the three panels
 pointerLocation = new JLabel();
 menuArea = new JPanel(new GridLayout(8,1));
 canvasArea = new JPanel();
 colorChooser = new JPanel();
 
 ButtonHandler handler = new ButtonHandler();
 
 //create buttons for left panel
 line = new ImageIcon("line.gif");
 lineButton = new JButton(line);
 lineButton.addActionListener(handler);
 
 lineThick = new ImageIcon("thickLine.gif");
 thickLineButton = new JButton(lineThick);
 thickLineButton.addActionListener(handler);
 
 circle = new ImageIcon("circle.gif");
 circleButton = new JButton(circle);
 circleButton.addActionListener(handler);
 
 circleFilled = new ImageIcon("circlefilled.gif");
 filledCircleButton = new JButton(circleFilled);
 filledCircleButton.addActionListener(handler);
 
 rect = new ImageIcon("rect.gif");
 rectangleButton = new JButton(rect);
 rectangleButton.addActionListener(handler);
 
 rectFilled = new ImageIcon("rectFilled.gif");
 filledRectangleButton = new JButton(rectFilled);
 filledRectangleButton.addActionListener(handler);
 
 eraser = new ImageIcon("eraser.gif");
 eraserButton = new JButton(eraser);
 eraserButton.addActionListener(handler);
 
 //setup left panel
 menuArea.setPreferredSize (new Dimension (35,0));
 menuArea.add(lineButton);
 menuArea.add(thickLineButton);
 menuArea.add(circleButton);
 menuArea.add(filledCircleButton);
 menuArea.add(rectangleButton);
 menuArea.add(filledRectangleButton);
 menuArea.add(eraserButton);
 
 //setup main canvas area
 MouseListener mouseListener = new MousePressListener();
 addMouseListener(mouseListener);
 
 canvasArea.setBackground(Color.white);
 canvasArea.setPreferredSize (new Dimension (700,350));
 
 
 //create layout
 content.setLayout (new BorderLayout());
 content.add (canvasArea, BorderLayout.CENTER);
 content.add (menuArea, BorderLayout.WEST);	

 ChangeListener listener = new ColorListener();

 redSlider = new JSlider (0,100,100);
 redSlider.addChangeListener(listener);
 
 greenSlider = new JSlider (0,100,100);
 greenSlider.addChangeListener(listener);
 
 blueSlider = new JSlider (0,100,100);
 blueSlider.addChangeListener(listener);
 
 colorChooser.setLayout(new GridLayout(3,2));

 colorChooser.add(new JLabel("Red",SwingConstants.RIGHT));
 colorChooser.add(redSlider);

 colorChooser.add(new JLabel("Green",SwingConstants.RIGHT));
 colorChooser.add(greenSlider);

 colorChooser.add(new JLabel("Blue",SwingConstants.RIGHT));
 colorChooser.add(blueSlider);

 getContentPane().add (colorChooser, BorderLayout.SOUTH);
 
 getContentPane().add (pointerLocation, BorderLayout.NORTH);
 
}



//create event handler for slider bars to change backgorund color.
class ColorListener implements ChangeListener
{
 public void stateChanged (ChangeEvent event)
 {
 float red = 0.01F * redSlider.getValue();
 float green = 0.01F * greenSlider.getValue();
 float blue = 0.01F * blueSlider.getValue();
 
 canvasArea.setBackground(new Color(red,green,blue));
 canvasArea.repaint();
 }

}

//create event handler for action buttons
class ButtonHandler implements ActionListener
{
 public void actionPerformed (ActionEvent event)
 {
	 String shape = event.getActionCommand();
 }
}

//create mouse handler for canvas
class MousePressListener implements MouseListener
{
 public void mousePressed (MouseEvent event)
 {
	 int startx = event.getX();
	 int starty = event.getY();
 }
 
 public void mouseReleased (MouseEvent event) 
 {
	 int endx = event.getX();
	 int endy = event.getY();
	 int width = event.getX() - startx;
	 int height = event.getY() - starty;
	 
	 if (shape == "line")
	 {
   g.drawLine(startx,starty,endx,endy);
	 }
	 if (shape == "lineThick")
	 {
   
	 }
	 if (shape == "circle")
	 {
   g.drawOval(startx,starty,width,height);
	 }
	 if (shape == "circleFilled")
	 {
   g.fillOval(startx,starty,width,height);
	 }
	 if (shape == "rect")
	 {
   g.drawRect(startx,starty,width,height);
	 }
	 if (shape == "rectFilled")
	 {
   g.fillRect(startx,starty,width,height);	
	 }
	 if (shape == "eraser")
	 {
   g.drawOval(startx,starty,10,10);	
	 }
	 
 
 }
 public void mouseClicked (MouseEvent event) {}
 public void mouseEntered (MouseEvent event) {}
 public void mouseExited (MouseEvent event) {}
}
}

 

I know there must be someone on this forum whos good at java. Than ks for any help.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...