import java.awt.*; import java.applet.Applet; import java.awt.event.*; /* * This displays a framed area. When the user drags within * the area, this program displays a rectangle extending from * where the user first pressed the mouse button to the current * cursor location. */ public class RectangleDemo extends Applet { SelectionArea drawingPanel; Label label; public void init() { GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridBag); drawingPanel = new SelectionArea(this); c.fill = GridBagConstraints.BOTH; c.weighty = 1.0; c.gridwidth = GridBagConstraints.REMAINDER; //end row gridBag.setConstraints(drawingPanel, c); add(drawingPanel); label = new Label("Drag within the framed area."); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1.0; c.weighty = 0.0; gridBag.setConstraints(label, c); add(label); drawingPanel.setVisible(true); validate(); } public void paint(Graphics g){ drawingPanel.repaint(); } public void update(Graphics g){ paint(g); } } class SelectionArea extends Canvas implements ActionListener, MouseListener, MouseMotionListener{ Rectangle currentRect; RectangleDemo controller; //for double buffering Image image; Graphics offscreen; public SelectionArea(RectangleDemo controller) { super(); this.controller = controller; addMouseListener(this); addMouseMotionListener(this); } public void actionPerformed(ActionEvent ae){ repaintoffscreen(); } public void repaintoffscreen(){ image = createImage(this.getWidth(), this.getHeight()); offscreen = image.getGraphics(); Dimension d = getSize(); if(currentRect != null){ Rectangle box = getDrawableRect(currentRect, d); //Draw the box outline. offscreen.drawRect(box.x, box.y, box.width - 1, box.height - 1); //repaint(); } } public void mouseEntered(MouseEvent me) {} public void mouseExited(MouseEvent me){ } public void mouseClicked(MouseEvent me){} public void mouseMoved(MouseEvent me){} public void mousePressed(MouseEvent me) { currentRect = new Rectangle(me.getX(), me.getY(), 0, 0); repaintoffscreen(); } public void mouseDragged(MouseEvent me) { System.out.println("here in dragged()"); currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y); repaintoffscreen(); repaint(); } public void mouseReleased(MouseEvent me) { currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y); repaintoffscreen(); repaint(); } public void update(Graphics g){ paint(g); } public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } Rectangle getDrawableRect(Rectangle originalRect, Dimension drawingArea) { int x = originalRect.x; int y = originalRect.y; int width = originalRect.width; int height = originalRect.height; //Make sure rectangle width and height are positive. if (width < 0) { width = 0 - width; x = x - width + 1; if (x < 0) { width += x; x = 0; } } if (height < 0) { height = 0 - height; y = y - height + 1; if (y < 0) { height += y; y = 0; } } //The rectangle shouldn't extend past the drawing area. if ((x + width) > drawingArea.width) { width = drawingArea.width - x; } if ((y + height) > drawingArea.height) { height = drawingArea.height - y; } return new Rectangle(x, y, width, height); } }
import java.applet.*; import java.awt.*; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; public class testingDemo extends Applet { private final int RECT_OP = 1; public int opStatus = 5; private int mousex = 0; private int mousey = 0; public boolean dragging = false; private int Orx = 0; private int Ory = 0; private int OrWidth = 0; private int OrHeight = 0; private int drawX = 0; private int drawY = 0; drawingPanel drawPanel; public Image image; public void init() { setLayout(new BorderLayout()); drawPanel = new drawingPanel(); drawPanel.setVisible(true); this.setBackground(Color.white); add(drawPanel, BorderLayout.CENTER); } class drawingPanel extends Panel implements MouseListener, MouseMotionListener { drawingPanel() { addMouseListener(this); addMouseMotionListener(this); } public void rectOperation(MouseEvent e){ mousex = e.getX(); mousey = e.getY(); setActualBoundry(); if(image == null){ image = this.createImage(this.getWidth(), this.getHeight()); } Graphics offscreen = image.getGraphics(); offscreen.setXORMode(Color.white); offscreen.drawRect(drawX, drawY, OrWidth, OrHeight); offscreen.drawRect(drawX, drawY, OrWidth, OrHeight); repaint(); } public boolean mouseHasMoved(MouseEvent e) { return (mousex != e.getX() || mousey != e.getY()); } public void setActualBoundry() { if (mousex < Orx || mousey < Ory) { if (mousex < Orx) { OrWidth = Orx - mousex; drawX = Orx - OrWidth; } else { drawX = Orx; OrWidth = mousex - Orx; } if (mousey < Ory) { OrHeight = Ory - mousey; drawY = Ory - OrHeight; } else { drawY = Ory; OrHeight = mousey - Ory; } } else { drawX = Orx; drawY = Ory; OrWidth = mousex - Orx; OrHeight = mousey - Ory; } } public void setGraphicalDefaults(MouseEvent e) { mousex = e.getX(); mousey = e.getY(); Orx = e.getX(); Ory = e.getY(); drawX = e.getX(); drawY = e.getY(); OrWidth = 0; OrHeight = 0; } public void mouseDragged(MouseEvent e) { dragging = true; System.out.println("In mousedragged"); opStatus = RECT_OP; rectOperation(e); } public void mouseReleased(MouseEvent e) { System.out.println("in mouseReleased()"); dragging = false; opStatus = RECT_OP; mousex = e.getX(); mousey = e.getY(); setActualBoundry(); releasedRect(); } public void mouseEntered(MouseEvent e) { } public void releasedRect() { System.out.println("in releasedRect()"); Graphics offscreen = image.getGraphics(); offscreen.setXORMode(Color.white); offscreen.drawRect(drawX, drawY, OrWidth, OrHeight); offscreen.drawRect(drawX, drawY, OrWidth, OrHeight); offscreen.setPaintMode(); offscreen.drawRect(drawX, drawY, OrWidth, OrHeight); offscreen.dispose(); repaint(); } public void mouseClicked(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void mousePressed(MouseEvent e) { setGraphicalDefaults(e); rectOperation(e); } public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } public void update(Graphics g) { paint(g); } } public void paint(Graphics g) { drawPanel.repaint(); } public void update(Graphics g) { paint(g); } }
public void rectOperation(MouseEvent e){
mousex = e.getX();
mousey = e.getY();
setActualBoundry();
if(image == null){
image = this.createImage(this.getWidth(), this.getHeight());
}
Graphics offscreen = image.getGraphics();
offscreen.setXORMode(Color.white);
offscreen.drawRect(drawX, drawY, OrWidth, OrHeight);
offscreen.drawRect(drawX, drawY, OrWidth, OrHeight);
repaint();
}dragging variable is never used. You assign it values, but never do anything with it. | DaniWeb Message | |
| Cancel Changes | |