import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.swing.*;
public class RandomImagesTest2 {
BufferedImage[] images;
Random seed = new Random();
JLabel left;
JLabel right;
RandomImagesTest2() {
makeImages();
new Thread(runner).start();
}
private Runnable runner = new Runnable() {
long delay = 1000;
boolean animate = true;
boolean firstTime = true;
public void run() {
while(animate) {
try {
Thread.sleep(delay);
} catch(InterruptedException e) {
animate = false;
}
left.setIcon(getIcon());
right.setIcon(getIcon());
if(firstTime && left.isVisible()) {
Rectangle rL = left.getBounds();
Rectangle rR = right.getBounds();
System.out.printf("leftBounds = [%d, %d, %d, %d] " +
"rightBounds = [%d, %d, %d, %d]%n",
rL.x, rL.y, rL.width, rL.height,
rR.x, rR.y, rR.width, rR.height);
firstTime = false;
}
left.repaint();
right.repaint();
}
}
};
private void makeImages() {
int alpha = 140;
Color[] colors = {
new Color(255, 0, 0, alpha), new Color(0, 0, 255, alpha)
};
int w = 90, h = 50;
int type = BufferedImage.TYPE_INT_ARGB;
images = new BufferedImage[colors.length];
for(int i = 0; i < images.length; i++) {
images[i] = new BufferedImage(w, h, type);
Graphics2D g2 = images[i].createGraphics();
g2.setBackground(colors[i]);
g2.clearRect(0,0,w,h);
g2.dispose();
}
}
private JPanel getContent() {
left = new JLabel(getIcon(), JLabel.CENTER);
right = new JLabel(getIcon(), JLabel.CENTER);
JPanel panel = new JPanel(null);
panel.add(left);
panel.add(right);
left.setBounds(50,50,90,50);
right.setBounds(100,50,90,50);
return panel;
}
private ImageIcon getIcon() {
int n = seed.nextInt(images.length);
return new ImageIcon(images[n]);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new RandomImagesTest2().getContent());
f.setSize(300,300);
f.setLocation(200,200);
f.setVisible(true);
}
}