Мне нужно написать код моей программы, чтобы случайным образом выбрать три карты из колоды карт.Изображения находятся в папке на моем рабочем столе.Затем я отображаю изображения карт.Моя программа работает нормально, считывая из файла, а затем случайным образом выбирая 3 карты из 52. У меня есть программа, печатающая 3 случайные карты на выходе.Но я не вижу изображения карт, когда на моем компьютере открывается окно Java.Он отображает небольшую линию, которая просто непрерывно повторяется.Поэтому я думаю, что он пытается отобразить карты, но у меня что-то не так, что мешает отображению всей карты (карт).Заранее спасибо за помощь!
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class DisplayThreeCards {
public static void main(String[] args) {
// File location
File folder = new File("//Users//macuser//Desktop//DeckOfCards");
File[] fileList;
fileList = folder.listFiles();
// Generate random card. Uses the Math.rand() function.
// The '%' operator is used to make sure the random is between 0-52.
int randomCard = (int) (Math.random() * 1000);
System.out.println(fileList[randomCard % 52].getAbsolutePath());
// Print the filename.
// Card 1
System.out.println(fileList[randomCard % 52].getName());
randomCard = (int) (Math.random() * 1000);
// Card 2
System.out.println(fileList[randomCard % 52].getName());
randomCard = (int) (Math.random() * 1000);
// Card 3
System.out.println(fileList[randomCard % 52].getName());
randomCard = (int) (Math.random() * 1000);
try {
ImageFrame frame = new ImageFrame(fileList[randomCard % 52].getAbsolutePath());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
} catch (Exception E) {
}
// Create a window for the card images to be displayed
class ImageFrame extends JFrame {
public ImageFrame(String name) {
setTitle("ImageTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
ImageComponent component = new ImageComponent(name);
add(component);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 300;
}
class ImageComponent extends JComponent {
private static final long serialVersionUID = 1L;
private Image image;
public ImageComponent(String name) {
try {
File image2 = new File(name);
image = ImageIO.read(image2);
} catch (IOException e) {
}
}
@Override
public void paintComponent(Graphics g) {
if (image == null) {
}
int imageWidth = image.getWidth(this);
int imageHeight = image.getHeight(this);
g.drawImage(image, 50, 50, this);
for (int i = 0; i * imageWidth <= getWidth(); i++) {
for (int j = 0; j * imageHeight <= getHeight(); j++) {
if (i + j > 0) {
g.copyArea(0, 0, imageWidth, imageHeight, i * imageWidth, j * imageHeight);
}
}
}
}
}
}
}