Как добавить количество изображений из каталога в форме java swing? - PullRequest
1 голос
/ 22 февраля 2011

Для моего проекта мне нужно показать несколько изображений из файлового каталога в форме java swing. Каталог и, следовательно, количество изображений и их путь меняются при каждом выполнении. Я планирую показать фиксированное количество изображений, скажем, 5, в форме и предоставить кнопку для загрузки последующих изображений в одном месте. Имена файлов изображений являются последовательными (например, eg1.jpg, eg2.jpg, eg3.jpg ...) Я использую Netbeans 6.9.1 IDE

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011
  1. Анализ списка файлов в каталоге.
  2. Прокрутка списка и отображение до первых пяти.
  3. Добавление кнопки, если существует более 5 изображений.

Существует несколько способов добавления изображений в контейнер в Swing.Один из самых простых - просто добавить его в качестве значка к JLabel.Я настоятельно рекомендую делать это вручную, а не с помощью инструмента с графическим интерфейсом.

1 голос
/ 22 февраля 2011

У меня есть только решение для вас.Я работал над похожим проектом и нашел эту ссылку чрезвычайно полезной для отображения изображений.скачать, запустить и понять проект "IconDemo".обратите внимание, что в этом проекте есть 2 отдельных потока - SwingWorker для загрузки изображений (потому что это ресурсоемкая задача) и EventDispatchThread, который касается графического интерфейса пользователя.

Что касается загрузки изображений из каталога, вы можете интегрироватьвышеупомянутый проект с JFileChooser.вот мой код ниже:

    //return file (image) names in the chosen directory
    public ArrayList<String> getFileNames() 
    {
        //widget to let users select a directory or file
        JFileChooser chooser = new JFileChooser();
        //holds all file (image) names in the chosen directory
        ArrayList<String> myArr = new ArrayList<String>();

        //only allow directory selection
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        //current directory is set
        chooser.setCurrentDirectory(new java.io.File("."));

        //pops up file chooser dialog, user chooses a directory
        int returnVal = chooser.showOpenDialog(null);

        //if the selected option was approved
        if(returnVal == JFileChooser.APPROVE_OPTION) 
        {
            //directory object
            File folder = chooser.getSelectedFile();
            //directory string
            directory = chooser.getSelectedFile() + "\\";
            //list files objects in the directory object
            listOfFiles = folder.listFiles();

            //put all the names of the file objects into myArr
            for (int i = 0; i < listOfFiles.length; i++) 
            {
                if (listOfFiles[i].isFile()) 
                {
                    myArr.add(directory+listOfFiles[i].getName());
                }//end inner if
            }//end for         
        }//end outer if
        //else no selection was made
        else 
        {
            System.out.println("No Selection ");
        }//end else

        return myArr;
    }//end method

комментирует мой код выше:

этот код использует JFileChooser, чтобы позволить вам выбрать каталог и вернуть ArrayList of Strings всех файлов изображенийв этой папке.Позже вы можете использовать эти строки для создания ImageIcons, перебирая ArrayList по одной, и ограничиваясь только 5 строками для 5 изображений.Если вы прочитали мою ссылку, приведенную выше, создание ImageIcons должно быть проще.Последний шаг - объединить все вышеперечисленное с формой Java-свинга, что на данный момент очевидно, на самом деле тривиально.Вы можете создать кнопку для загрузки более 5 изображений.Удачи!

0 голосов
/ 22 февраля 2011

Я создаю изображение JFrame, которое содержит JScrollPane.Эта JScrollPane содержит JPanel.У JPanel есть GridLayout для количества картинок.Установите область просмотра JSCrollPane на JPanel.Добавьте изображения в JPanels.

<code>
JFrame theFrame = new JFrame();
JPanel picPanel = new JPanel();
JScrollPane scoller = new JScrollPane(picPanel);
theFrame.add(scroller);
//set layout to number of pics
picPanel.setLayout(new GridLayout(numOfPics,1));
//add pics to pic panel

Вы можете использовать ImageIO для считывания изображений из каталога


BufferedImage newImage = ImageIO.read(theFile)

, а затем добавить его вJLabel, который затем можно добавить в JPanel


JLabel newImageLabel = new JLabel();
newImage.setIcon(new ImageIcon(newImage));
picPanel.add(newImageLabel);


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