在java中随机显示1到9张图片,每3张图片一列,多余的显示到下一列
时间: 2024-03-21 19:42:09 浏览: 67
可以使用Java中的Swing库来实现此功能。以下是一个示例代码,可以随机显示1到9张图片,每3张图片一列,多余的图片会自动显示到下一列:
```java
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class RandomImageDisplay extends JFrame {
private static final long serialVersionUID = 1L;
private static final int ROWS = 3; // 每列最多显示的行数
private static final int COLS = 3; // 最多显示的列数
private static final int MAX_IMAGES = ROWS * COLS; // 最多显示的图片数
private static final int IMAGE_WIDTH = 200; // 图片宽度
private static final int IMAGE_HEIGHT = 200; // 图片高度
private static final String[] IMAGE_FILES = {
"image1.jpg", "image2.jpg", "image3.jpg",
"image4.jpg", "image5.jpg", "image6.jpg",
"image7.jpg", "image8.jpg", "image9.jpg"
}; // 图片文件名数组
private ArrayList<String> imageList = new ArrayList<String>(); // 图片文件名列表
public RandomImageDisplay() {
super("Random Image Display");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(COLS * IMAGE_WIDTH, ROWS * IMAGE_HEIGHT);
setLocationRelativeTo(null);
setLayout(new GridLayout(ROWS, COLS));
Collections.addAll(imageList, IMAGE_FILES);
Collections.shuffle(imageList); // 随机排序图片文件名列表
int imageCount = Math.min(imageList.size(), MAX_IMAGES); // 计算需要显示的图片数
for (int i = 0; i < imageCount; i++) {
String fileName = imageList.get(i);
ImageIcon icon = new ImageIcon(fileName);
JLabel label = new JLabel(icon);
add(label);
if ((i + 1) % ROWS == 0) { // 每列显示3张图片
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(ROWS, 1));
for (int j = i - ROWS + 1; j <= i; j++) {
JLabel l = new JLabel(new ImageIcon(imageList.get(j)));
panel.add(l);
}
add(panel);
}
}
setVisible(true);
}
public static void main(String[] args) {
new RandomImageDisplay();
}
}
```
该代码首先创建一个窗口,然后随机排序图片文件名列表,计算需要显示的图片数,最后将图片添加到窗口中,每3张图片一列。可以根据需要修改ROWS、COLS、IMAGE_WIDTH、IMAGE_HEIGHT等变量的值来调整图片的显示效果。
阅读全文