1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
public class Carte extends JPanel implements MouseListener, MouseMotionListener
{
public static void main( String[] arg ) throws IOException
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Carte carte = new Carte( new File( "grand.jpg" ) );
JTabbedPane tabbed = new JTabbedPane();
tabbed.add( "premier", carte.getJScrollPane() );
frame.getContentPane().add( tabbed );
frame.setSize( 640, 480 );
frame.setVisible( true );
}
private static final long serialVersionUID = 1L;
private BufferedImage fond;
private BufferedImage points;
private Point deplaceSouris = null;
private JScrollPane scroll;
public Carte( File fichierCarte ) throws IOException
{
fond = ImageIO.read( fichierCarte );
points = new BufferedImage( fond.getWidth(), fond.getHeight(), BufferedImage.TYPE_INT_ARGB );
addMouseListener( this );
addMouseMotionListener( this );
scroll = new JScrollPane( this );
}
public JScrollPane getJScrollPane()
{
return scroll;
}
@Override
public void paintComponent( Graphics g )
{
g.drawImage( fond, 0, 0, this );
g.drawImage( points, 0, 0, this );
}
@Override
public Dimension getPreferredSize()
{
return new Dimension( getWidth(), getHeight() );
}
@Override
public int getHeight()
{
return fond.getHeight();
}
@Override
public int getWidth()
{
return fond.getWidth();
}
@Override
public void mouseReleased( MouseEvent e )
{
if( e.getButton() == MouseEvent.BUTTON1 )
{
Graphics g = points.createGraphics();
g.setColor( Color.BLACK );
g.drawString( "(" + e.getX() + ", " + e.getY() + ")", e.getX(), e.getY() );
g.dispose();
repaint();
}
else
{
deplaceSouris = null;
}
}
@Override
public void mousePressed( MouseEvent e )
{
if( e.getButton() == MouseEvent.BUTTON3 )
{
deplaceSouris = new Point( e.getX(), e.getY() );
}
}
@Override
public void mouseDragged( MouseEvent e )
{
if( deplaceSouris != null )
{
Point viewPoint = scroll.getViewport().getViewPosition();
viewPoint.translate( deplaceSouris.x - e.getX(), deplaceSouris.y - e.getY() );
//ne pas deplacer l'image en dehors de la vue en horizontal
if( viewPoint.x < 0 )
{
viewPoint.x = 0;
}
else if( viewPoint.x > this.getWidth() - scroll.getViewport().getWidth() )
{
viewPoint.x = this.getWidth() - scroll.getViewport().getWidth();
}
//ne pas deplacer l'image en dehors de la vue en vertical
if( viewPoint.y < 0 )
{
viewPoint.y = 0;
}
else if( viewPoint.y > this.getHeight() - scroll.getViewport().getHeight() )
{
viewPoint.y = this.getHeight() - scroll.getViewport().getHeight();
}
scroll.getViewport().setViewPosition( viewPoint );
}
}
@Override
public void mouseClicked( final MouseEvent e ){}
@Override
public void mouseEntered( MouseEvent e ){}
@Override
public void mouseExited( MouseEvent e ){}
@Override
public void mouseMoved( MouseEvent e ){}
} |
Partager