Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2017, 10:17   #1
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию Создание массива картинок, добавление во фрейм и переключение.

Всем привет, как создать массив картинок? Имею в виду как добавить картинки в массив а потом переключать их с помощью кнопки?

У меня получилось следующее но это только с одной картинкой, а как сделать это со многими?

Код:
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
 
public class MyJPanel extends JPanel implements ActionListener{
    JButton button = new JButton();
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    
    public static void main(String[] args) {
        MyJPanel gui = new MyJPanel();
        gui.go();
    }
    
 
    public void go(){
        button.setText("Change image");
        panel.setBackground(Color.darkGray);
        panel.add(button);
    
        frame.getContentPane().add(panel, BorderLayout.PAGE_END);
        frame.getContentPane().add(this);
        
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(980,780);
        frame.setVisible(true);
    }
   
    @Override
    public void paintComponent(Graphics g){
        //Как тут создать массив и задать каждому элементу массива свою картинку?
        //Пробовал так но не вышло --> Image[] image = new ImageIcon[3];
        Image image = new ImageIcon("d:\\Оформление рабочего стола\\wpapers_ru_BMW---M5-Concept-(2004).jpg").getImage();
        g.drawImage(image, 3, 3, this);
    }
    
 
    @Override
    public void actionPerformed(ActionEvent e) {
        //Какое действие должно происходить при нажатии кнопки?(событии)
    }  
    
}
Исправьте плиз написанный мной код.
max29 вне форума Ответить с цитированием
Старый 06.06.2017, 10:38   #2
Tsyklop
Пользователь
 
Аватар для Tsyklop
 
Регистрация: 25.08.2014
Сообщений: 11
По умолчанию

Можно сделать так:
Создать ArrayList<Image>(). Поместить все картинки в папку. при помощи new File("путь к папке").listFiles() получить все картинки в папке. Пройтись в цикле по масиву файлов и добавлять в ArrayList Image, который ты создашь:

array.add(new ImageIcon(путь к файлу).getImage());

Код:
        ArrayList<Image> images = new ArrayList<>();

        File[] files = new File("").listFiles();

        for(File f : files) {
            images.add(new ImageIcon(f.getAbsolutePath()).getImage());
        }
ну а потом переключай.

Я бы порекомендовал сделать заполнение массива картинок при запуске приложения.

Последний раз редактировалось Tsyklop; 06.06.2017 в 10:48.
Tsyklop вне форума Ответить с цитированием
Старый 07.06.2017, 20:04   #3
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию

Сделал такое:
Код:
ImageIcon[] image3 = new ImageIcon[3];
но почему-то не получается присвоить элементам значения, вот:
Код:
image3[0] = {"d:\\Оформление рабочего стола\\wpapers_ru_BMW---M5-Concept-(2004).jpg"};
max29 вне форума Ответить с цитированием
Старый 07.06.2017, 20:28   #4
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию

По поводу вашего кода... а как переключать?
С помощью какого кода? не этого ли?
Код:
this.repaint();
И ещё по поводу этого кода:
Код:
g.drawImage(????, 150, 150, this);
Если его применить с вашим кодом то как его реализовать?

Вот кое что сделал и кажется начал понимать как можно это сделать
Код:
g.drawImage(images.get(0), 150, 150, this);

Последний раз редактировалось max29; 07.06.2017 в 22:25.
max29 вне форума Ответить с цитированием
Старый 07.06.2017, 22:55   #5
Tsyklop
Пользователь
 
Аватар для Tsyklop
 
Регистрация: 25.08.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от max29 Посмотреть сообщение
Вот кое что сделал и кажется начал понимать как можно это сделать
Код:
g.drawImage(images.get(0), 150, 150, this);
вынести индекс как поле класса. при каждой отрисовке, в методе, увеличивать на одно значение.
Tsyklop вне форума Ответить с цитированием
Старый 08.06.2017, 07:05   #6
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию

А почему нельзя к примеру положить сразу в ArrayList? почему надо сначала добавлять в File?
P.s. File вроде-бы создаёт массив указателей так? мы же не добавляем файлы непосредственно в File?
max29 вне форума Ответить с цитированием
Старый 08.06.2017, 09:17   #7
Tsyklop
Пользователь
 
Аватар для Tsyklop
 
Регистрация: 25.08.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от max29 Посмотреть сообщение
А почему нельзя к примеру положить сразу в ArrayList? почему надо сначала добавлять в File?
P.s. File вроде-бы создаёт массив указателей так? мы же не добавляем файлы непосредственно в File?
в какой File?
Мы получаем список всех нужных файлов и потом добавляем в массив. Можно добавить в массив просто путь к файлу, а не Image. ну а в том методе уже брать путь и создавать Image.
Tsyklop вне форума Ответить с цитированием
Старый 08.06.2017, 12:52   #8
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Tsyklop Посмотреть сообщение
в какой File?
вот этот File;
Код:
File[] files = new File("").listFiles();
max29 вне форума Ответить с цитированием
Старый 08.06.2017, 14:55   #9
Tsyklop
Пользователь
 
Аватар для Tsyklop
 
Регистрация: 25.08.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от max29 Посмотреть сообщение
вот этот File;
Код:
File[] files = new File("").listFiles();
тут ты указываешь путь к папке с файлами. потом берешь список этих файлов и обрабатываешь..
Tsyklop вне форума Ответить с цитированием
Старый 08.06.2017, 20:29   #10
max29
Пользователь
 
Аватар для max29
 
Регистрация: 16.04.2016
Сообщений: 41
По умолчанию

кажись понял спс.
max29 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление массива картинок в EditText Kitzmann Java Мобильная разработка (Android) 0 24.03.2017 09:21
программное добавление картинок в Word xrob Компоненты Delphi 0 30.04.2014 18:06
Добавление большого количества картинок в примечания Олег83 Microsoft Office Excel 0 30.01.2012 15:43
Delphi Добавление картинок в DBGrid и DBGridEh, Как добавить изображения в таблицу zerdalert БД в Delphi 0 20.04.2011 01:30
Переключение картинок Olegavto JavaScript, Ajax 1 14.02.2011 11:27