Отображать изображения карт из файла - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно написать код моей программы, чтобы случайным образом выбрать три карты из колоды карт.Изображения находятся в папке на моем рабочем столе.Затем я отображаю изображения карт.Моя программа работает нормально, считывая из файла, а затем случайным образом выбирая 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);
                        }
                    }
                }

            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...