Results 1 to 8 of 8
- 04-10-2010, 12:36 PM #1
Senior Member
- Join Date
- Apr 2010
- Location
- Belgrade, Serbia
- Posts
- 278
- Rep Power
- 4
Draw rectangle in applet with coordinates of two mouse clicks
Hi. I need help with my applet.
When I click with mouse first time it should get coordinates of
top left position of my rectangle. Then when I click with mouse
second time it should get coordinates of bottom right position of
my rectangle. And finally I want to paint that rectangle.
I wrote some code but it's not good.
How it can be done?
Java Code:import java.awt.Graphics; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import javax.swing.JApplet; public class MyApplet extends JApplet implements MouseListener{ boolean isClicked = false; boolean twoClicks = false; int firstXCoord = 0; int firstYCoord = 0; int secondXCoord = 0; int secondYCoord = 0; public void mouseClicked(MouseEvent event) { if(!isClicked) { firstXCoord = event.getX(); firstYCoord = event.getY(); repaint(); } else { secondXCoord = event.getX(); secondYCoord = event.getY(); } twoClicks = true; repaint(); } public void paint(Graphics g) { if(twoClicks) g.drawRect(firstXCoord, firstYCoord, secondXCoord - firstXCoord, secondXCoord - firstXCoord); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }
-
You must do more than just create a MouseListener; you also have to add a MouseListener to a component that will accept it. I recommend that you create a JPanel and add the mouse listener to the JPanel and also do the drawing in the JPanel's paintComponent override. Then add this JPanel to your JApplet's contentPane.
- 04-10-2010, 01:35 PM #3
Senior Member
- Join Date
- Apr 2010
- Location
- Belgrade, Serbia
- Posts
- 278
- Rep Power
- 4
Thank you. I'll try that right now.
-
You'll also want to check your logic again. You check if isClicked is true or not, but do you ever change the state of this field?
- 04-10-2010, 01:57 PM #5
Senior Member
- Join Date
- Apr 2010
- Location
- Belgrade, Serbia
- Posts
- 278
- Rep Power
- 4
Thank you so much.
My final code is working. Final code:
Java Code:import java.awt.Graphics; import java.awt.Container; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import javax.swing.JApplet; import javax.swing.JPanel; public class MyApplet extends JApplet { MyPanel panel = new MyPanel(); public void init() { Container content = getContentPane(); content.add(panel); } class MyPanel extends JPanel implements MouseListener { boolean isClicked = false; boolean twoClicks = false; int firstXCoord = 0; int firstYCoord = 0; int secondXCoord = 0; int secondYCoord = 0; MyPanel() { addMouseListener(this); } public void mouseClicked(MouseEvent event) { if(!isClicked) { firstXCoord = event.getX(); firstYCoord = event.getY(); isClicked = true; } else { secondXCoord = event.getX(); secondYCoord = event.getY(); repaint(); } twoClicks = true; repaint(); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.drawRect(firstXCoord, firstYCoord, secondXCoord - firstXCoord, secondYCoord - firstYCoord); } } }Last edited by cselic; 04-10-2010 at 02:04 PM.
-
- 04-10-2010, 05:45 PM #7
Senior Member
- Join Date
- Apr 2010
- Location
- Belgrade, Serbia
- Posts
- 278
- Rep Power
- 4
it's very useful example.with ellipses here: http://www.java-forums.org/new-java/...tml#post113936
For practice, I'll try to do with my applet few things more.
First, I'm going to add applet parameters: rowNumber, columnNumber.
Second, I'll split existing rectangle into small rectangles.
rowNuber would give me a number of small rectangles into row, and
columnNumber would give me a number of small rectangles into column of big rectangle.
If I succeed, I'll post code.
html page:
Java Code:<html> <head> <title>rectangle</title> </head> <body> <APPLET CODE="MyApplet" WIDTH=300 HEIGHT=300> <param name="rowNumber" value="5"> <param name="columnNumber" value="7"> </APPLET> </body> </html>
- 04-10-2010, 07:07 PM #8
Senior Member
- Join Date
- Apr 2010
- Location
- Belgrade, Serbia
- Posts
- 278
- Rep Power
- 4
MyApplet.java
Java Code:import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Container; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.geom.Rectangle2D; import javax.swing.JApplet; import javax.swing.JPanel; public class MyApplet extends JApplet { int rowNumber = 3; int columnNumber = 3; MyPanel panel = new MyPanel(); public void init() { String numberOfRows = getParameter("rowNumber"); String numberOfColumns = getParameter("columnNumber"); if(numberOfRows != null && numberOfColumns != null) { rowNumber = Integer.parseInt(numberOfRows); columnNumber = Integer.parseInt(numberOfColumns); } Container content = getContentPane(); content.add(panel); } class MyPanel extends JPanel implements MouseListener { boolean isClicked = false; boolean twoClicks = false; int firstXCoord = 0; int firstYCoord = 0; int secondXCoord = 0; int secondYCoord = 0; MyPanel() { addMouseListener(this); } public void mouseClicked(MouseEvent event) { if(!isClicked) { firstXCoord = event.getX(); firstYCoord = event.getY(); isClicked = true; } else { secondXCoord = event.getX(); secondYCoord = event.getY(); repaint(); } twoClicks = true; } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2D = (Graphics2D)g; if(twoClicks) { float widthOfLittleRectangle = (secondXCoord - firstXCoord) / rowNumber; float heightOFLittleRectangle = (secondYCoord - firstYCoord) / columnNumber; for(int i = 0; i < rowNumber; i++) for(int j = 0; j < columnNumber; j++) { g2D.draw(new Rectangle2D.Float(firstXCoord + widthOfLittleRectangle * i, firstYCoord + heightOFLittleRectangle * j, widthOfLittleRectangle, heightOFLittleRectangle)); } twoClicks = false; isClicked = false; } } } }
Similar Threads
-
Getting mouse coordinates
By nishant.4545 in forum Advanced JavaReplies: 3Last Post: 07-20-2009, 11:28 PM -
Draw String in Rectangle
By DavidG24 in forum AWT / SwingReplies: 3Last Post: 05-20-2009, 07:05 AM -
how to draw a fill rectangle using mouse and paintComponent?
By java_fun2007 in forum New To JavaReplies: 7Last Post: 04-14-2009, 07:12 PM -
[SOLVED] Intercepting mouse clicks
By carderne in forum New To JavaReplies: 6Last Post: 02-28-2009, 07:10 PM -
How to Draw a Rectangle in Java
By Java Tip in forum java.awtReplies: 0Last Post: 06-22-2008, 11:09 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks