Hi Daniele and John,
A big "THANKS" for your replies.
The program below takes 3 images
allows for showing them in random order
at random locations. The user then uses the mouse to
move the images to reorder. It is a work in progress.
I have not studied the entire list of your
recommendations but eventually hope to do so.
I appreciate your responses very much.
bH
/* original:
http://www.thatsjava.com/java-essentials/49032/
*
* Version2: 22 March 2011:
* Three XX.png images stored in folder named "images"
* The program takes the images puts them in random order
* at random locations. The user then uses the mouse to
* move the images to reorder. bH
*/
import java.awt.EventQueue;
import java.awt.Container;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event. MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing. JLayeredPane;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class LabelDragAndDropVer2 extends JFrame implements
MouseListener, MouseMotionListener
{
JLayeredPane layeredPane;
Component dragComponent;
int xAdjustment;
int yAdjustment;
private String strNumber[] = new String [3];
private int number = 0 ;
private Random wheel = new Random();
int high= 60;
int low = 20;
int numPictures = 3;
// two arrays stores x,y values
int[] xPoints = new int[numPictures];
int[] yPoints = new int[numPictures];
public LabelDragAndDropVer2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
setVisible(true);
}
public void init() {
// Use a Layered Pane for this this application
layeredPane = new JLayeredPane();
layeredPane.setLayout( null );
layeredPane.addMouseListener( this );
layeredPane.addMouseMotionListener( this );
getContentPane().add(layeredPane);
// ordering the location of picture random
for (int i= 0;i<numPictures; i++){
int m = wheel.nextInt(high - low + 1 ) + low;
xPoints
= m;
int n = wheel.nextInt(high - low + 1 ) + low;
yPoints= n;
System.out.println(i+ " "+ m + " ," + n);
}
System.out.println("");
for(int i = 0; i<3; i++){
strNumber = Integer.toString(i);
number = Integer.parseInt(strNumber);
System.out.println(number);
}
// ordering the images randomly
List<String> inputList = Arrays.asList(strNumber);
Collections.shuffle(inputList);
for (int i= 0;i<3; i++){
number = Integer.parseInt(strNumber);
ImageIcon julia = new ImageIcon("images/MH"+
number + ".png");
JLabel label = new JLabel(julia);
label.setLocation(xPoints, yPoints);
label.setSize( label.getPreferredSize() );
layeredPane.add(label);
}
Container contentPane= getContentPane();
contentPane.setLayout(new GridLayout(1,2) );
setSize(600,600);// frame size
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/*
** Determine if we clicked on a moveable component
*/
public void mousePressed(MouseEvent e)
{
dragComponent = null;
Component c = layeredPane.findComponentAt(e.getX(),
e.getY());
if (c instanceof JLayeredPane) return;
dragComponent = c;
xAdjustment = dragComponent.getLocation().x - e.getX();
yAdjustment = dragComponent.getLocation().y - e.getY();
dragComponent.setLocation(e.getX() + xAdjustment,
e.getY() + yAdjustment);
layeredPane.moveToFront(dragComponent);
}
/*
** Move the component around the panel
*/
public void mouseDragged(MouseEvent me)
{
if (dragComponent == null) return;
dragComponent.setLocation(me.getX() + xAdjustment,
me.getY() + yAdjustment);
}
/*
** Deselect the component
*/
public void mouseReleased(MouseEvent e)
{
dragComponent = null;
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new LabelDragAndDropVer2();
}
});
}
}