Results 1 to 1 of 1
Thread: drag and drop
- 01-18-2011, 07:07 AM #1
Member
- Join Date
- Sep 2010
- Posts
- 18
- Rep Power
- 0
drag and drop
Hey,
I need some help here, when i compile and ran the codes below, i was able to drag and snap the image onto the top left hand corner of the panel. However,
when i move the image away and clicked onto the corner, the image gets repainted over there, how do i prevent this from happening? Would greatly appreciate some help thanks.
Java Code:import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; @SuppressWarnings("serial") public class StockIndex1 extends JPanel { // !! static String imageFile = "stockindextest.png";// replace with new // image public static final String IMAGE_PATH = "http://duke.kenai.com/iconSized/duke4.gif"; // !! private static final int w = 87;// getting back here for width // !! private static final int h = 15;// getting back here for height private int w; private int h; private static final int SIDE = 500; private BufferedImage buffImage; private boolean _canDrag = false; private boolean _released = false; private int _labelX = 370;// getting back here for x coord private int _labelY = 50;// getting back here for y coord private int _newLabelX = 0; private int _newLabelY = 0; private int _dragFromX = 0; private int _dragFromY = 0; public StockIndex1() { super(); initialize(); MyMouseAdapter mouseAdapter = new MyMouseAdapter(); this.addMouseListener(mouseAdapter); this.addMouseMotionListener(mouseAdapter); } private void initialize() { // !! String filePath = getClass().getResource("images").toString(); // filePath = filePath.substring(6); // File f = new File(filePath + "/stockindextest" + ".png"); try { URL imageUrl = new URL(IMAGE_PATH); // !! buffImage = ImageIO.read(f); buffImage = ImageIO.read(imageUrl); // !! w = buffImage.getWidth(); // !! h = buffImage.getHeight(); // !! } catch (IOException e2) { e2.printStackTrace(); } this.setSize(720, 480); this.setLayout(null); this.setOpaque(false); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(buffImage, _labelX, _labelY, w, h, null); } private class MyMouseAdapter extends MouseAdapter { @Override public void mouseDragged(MouseEvent e) { if (_canDrag) { // True only if button was pressed inside label. // --- label pos from mouse and original click displacement _labelX = e.getX() - _dragFromX; _labelY = e.getY() - _dragFromY; // --- Don't move the label off the screen sides _labelX = Math.max(_labelX, 0); _labelX = Math.min(_labelX, getWidth() - w); // --- Don't move the label off top or bottom _labelY = Math.max(_labelY, 0); _labelY = Math.min(_labelY, getHeight() - h); StockIndex1.this.repaint(); } } @Override public void mouseExited(MouseEvent e) { _canDrag = false; } @Override public void mousePressed(MouseEvent e) { int x = e.getX(); // Save the x coord of the click int y = e.getY(); // Save the y coord of the click if (x >= _labelX && x <= (_labelX + w) && y >= _labelY && y <= (_labelY + h)) { _canDrag = true; _dragFromX = x - _labelX; // how far from left _dragFromY = y - _labelY; // how far from top } else { _canDrag = false; } } @Override public void mouseReleased(MouseEvent e) { _released = false; _canDrag = true; int x = e.getX(); int y = e.getY(); if (x > _newLabelX && x < _newLabelX + 100 && y > _newLabelY && y < _newLabelY + 100) { _released = true; _labelX = _newLabelX; _labelY = _newLabelY; repaint(); } else { _released = false; } } } private static void createAndShowUI() { StockIndex1 stockIndex = new StockIndex1(); stockIndex.setPreferredSize(new Dimension(SIDE, SIDE)); JFrame frame = new JFrame("StockIndex"); frame.getContentPane().add(stockIndex); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { createAndShowUI(); } }); } }
Similar Threads
-
drag and drop - disable intra component drop
By tomba in forum AWT / SwingReplies: 4Last Post: 12-09-2009, 01:01 PM -
Drag and Drop
By carderne in forum New To JavaReplies: 0Last Post: 08-31-2009, 09:18 AM -
Drag and drop
By thayalan in forum AWT / SwingReplies: 1Last Post: 02-16-2009, 03:04 PM -
Simple DND (Drag and Drop) Example
By Java Tip in forum SWTReplies: 0Last Post: 07-07-2008, 04:37 PM -
Drag and drop
By abhivenugopal in forum JavaServer Pages (JSP) and JSTLReplies: 0Last Post: 01-30-2008, 02:10 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks