С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14

Список - подгрузка изображений

23.12.2014, 05:43. Показов 1071. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый, уважаемые, форумчане!
С наступающем всех!


Подскажите, кому не сложно:
Как сделать так, что бы при выборе, в списке, определенного номера и нажатии кнп "GO", подгружалась та или иная картинка. Те, выбрал 1044 - загрузилась одна картинка, выбрал 1045 - другая.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
public class tests {
 
    private static TransformingCanvas canvas;
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel toolbar = new JPanel();
        
        
        String[] number = new String[] {"1044", "1045", "1046", "1054"}; 
        JComboBox combo = new JComboBox(number);
        combo.setSelectedIndex(0);
        
        JButton butGo = new JButton("GO");
        
        
        toolbar.add(combo);
        toolbar.add(butGo);
        
        
        
        
        canvas = new TransformingCanvas();
        TranslateHandler translater = new TranslateHandler();
        canvas.addMouseListener(translater);
        canvas.addMouseMotionListener(translater);
        canvas.addMouseWheelListener(new ScaleHandler());
        frame.setLayout(new BorderLayout());
        frame.getContentPane().add(toolbar, BorderLayout.PAGE_START);
        frame.getContentPane().add(canvas, BorderLayout.CENTER);
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
 
    private static class TransformingCanvas extends JComponent {
        
        private static final long serialVersionUID = 1L;
        private double translateX;
        private double translateY;
        private double scale;
 
        TransformingCanvas() {
            translateX = 0;
            translateY = 0;
            scale = 0.5;
            setOpaque(true);
            setDoubleBuffered(true);
        }
 
        @Override 
        public void paint(Graphics g) {
            AffineTransform tx = new AffineTransform();
            tx.translate(translateX, translateY);
            tx.scale(scale, scale);
            Graphics2D ourGraphics = (Graphics2D) g;
 
            ourGraphics.setColor(Color.WHITE);
            ourGraphics.fillRect(0, 0, getWidth(), getHeight());
 
            ourGraphics.setTransform(tx);
            ourGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            ourGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
 
            Image image = new ImageIcon("1.jpg").getImage();
            ourGraphics.drawImage(image, 100, 100, this);
        }
       
    }
 
    private static class TranslateHandler implements MouseListener,
            MouseMotionListener {
        private int lastOffsetX;
        private int lastOffsetY;
 
        public void mousePressed(MouseEvent e) {
            // Захват стартовой точки
            lastOffsetX = e.getX();
            lastOffsetY = e.getY();
        }
 
        public void mouseDragged(MouseEvent e) {
            
            // new x and y are defined by current mouse location subtracted
            // by previously processed mouse location
            int newX = e.getX() - lastOffsetX;
            int newY = e.getY() - lastOffsetY;
 
            // increment last offset to last processed by drag event.
            lastOffsetX += newX;
            lastOffsetY += newY;
 
            // update the canvas locations
            canvas.translateX += newX;
            canvas.translateY += newY;
            
            // schedule a repaint.
            canvas.repaint();
        }
 
        public void mouseClicked(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
        public void mouseMoved(MouseEvent e) {}
        public void mouseReleased(MouseEvent e) {}
    }
 
    private static class ScaleHandler implements MouseWheelListener {
        public void mouseWheelMoved(MouseWheelEvent e) {
            if(e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
                
                // make it a reasonable amount of zoom
                // .1 gives a nice slow transition
                canvas.scale += (.1 * e.getWheelRotation());
                // don't cross negative threshold.
                // also, setting scale to 0 has bad effects
                canvas.scale = Math.max(0.00001, canvas.scale); 
                canvas.repaint();
            }
        }
    }
 
}



Очень тяжело дается сие чудо. Много примеров излазил, но в итоге ничего путнего не добился.

Вроде по отдельности, в других примерах, почти понятно как работают слушатели..как прикручивается работа кнопки к списку...но, блин, не могу коректно сюда все воткнуть..запутался больше(

Заранее, спасибо и прошу прощения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2014, 05:43
Ответы с готовыми решениями:

Подгрузка изображений
Помогите пожалуйста с такой задачей: <img src="/image.jpg" onmouseover="this.src='/image.gif'"...

Qt QString QPixMap Подгрузка изображений
Снова побеспокою. Цель - реализовать програмно, чтобы при нажатии кнопки подгружалась следующая по списку картинка. Теория i = 1; ...

TsAlphaImageList, динамическая подгрузка изображений
Нужно в TreeView получить имена папок(в определённой директории) и в зависимости от имени папки, загрузить для неё изображение в...

15
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 06:04
Sqwartl, попробуй использовать JList, туда передай свой массив.
Далее поставь слушатель на копку, в слушатель добавь list.getSelectedItem, отсюда получаешь выделенный элемент, в твоем случае номер картинки, ну, а дальше уже работаешь с этим номером как тебе надо.

Если сам, не допрешь вечером подробней распишу.
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
23.12.2014, 06:59  [ТС]
Subik, то-то и оно...руки не от туда. Я понимаю, что Вы написали, понимаю как что работает, по отдельности, но не могу "совместить"...
Вроде пытался с JList работать...но не с массивом. Попробую еще раз.
Спасибо!

Добавлено через 39 минут
Хотя фигню написал, мне нужен именно выпадающий список
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 08:12
Sqwartl, просто у вас написано
Цитата Сообщение от Sqwartl Посмотреть сообщение
Как сделать так, что бы при выборе, в списке, определенного номера
По этому, и подумал, что нужен обычный список.

Но там на самом деле без разницы, обычный или выпадающий список.
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
23.12.2014, 11:41  [ТС]
Чтобы при нажатии кнопки, шло считывание "номера" из списка, надо так сделать?:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel toolbar = new JPanel();
        
        
        final String[] number = new String[] {"1044", "1045", "1046", "1054"}; 
        final JComboBox combo = new JComboBox(number);
        combo.setSelectedIndex(0);
        combo.setEditable(true);
            
        
        final JButton butGo = new JButton("GO");
            
        butGo.addActionListener(new ActionListener() {        
            public void actionPerformed(ActionEvent e) {            
                combo.setSelectedItem(number);      
                }   
            });


Добавлено через 39 минут
не, какая-то фигня получается((
В поле списка, вместо номера, ставится: [Ljava.lang.String;@253498

Добавлено через 7 минут
Блин, тупень, надо же вставить
Java
1
combo.getSelectedItem();
Теперь,как и в прошлый раз, не понимаю принцип, как сделать подгрузку разных изображений
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void paint(Graphics g) {
            AffineTransform tx = new AffineTransform();
            tx.translate(translateX, translateY);
            tx.scale(scale, scale);
            Graphics2D ourGraphics = (Graphics2D) g;
 
            ourGraphics.setColor(Color.WHITE);
            ourGraphics.fillRect(0, 0, getWidth(), getHeight());
 
            ourGraphics.setTransform(tx);
            ourGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            ourGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
 
            Image image = new ImageIcon("1.jpg").getImage();
            ourGraphics.drawImage(image, 100, 100, this);
        }
в зависимости от выбора строки
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 12:55
Sqwartl,
Должно быть как то так=)

Java
1
2
3
String numberImage = combo.getSelectedItem();
 
Image image = new ImageIcon(numberImage + ".jpg").getImage();
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
23.12.2014, 16:00  [ТС]
Я так понимаю, мне надо
Java
1
String numberImage = combo.getSelectedItem();
вставить сюда:
Java
1
2
3
4
5
butGo.addActionListener(new ActionListener() {        
            public void actionPerformed(ActionEvent e) {            
                combo.getSelectedItem();
            }   
            });
А код
Java
1
Image image = new ImageIcon(numberImage + ".jpg").getImage();
вставить сюда?:

Java
1
2
Image image = new ImageIcon("1.jpg").getImage();
            ourGraphics.drawImage(image, 100, 100, this);
Добавлено через 1 минуту
за место соответствующих строк конечно

Добавлено через 14 минут
Я до этого нашел, описанный Вами вариант тут.
Но не получается прикрутить, не понимаю как правильно подставить.

Добавлено через 2 часа 34 минуты
Ниче не получается...по перетыкал во все возможные места.
Я так понимаю(незнаю как объяснить правильно) слушатель находится в методе "main", а вывод графики в "private static class TransformingCanvas extends JComponent"...и поэтому не может нормально сослаться...наверное или опять бред и я не вижу очевидного решения?
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 16:31
Class Main
Java
1
2
3
4
5
6
7
public class Main {
 
    public static void main(String[] args) {
        GUI gui = new GUI();
        gui.getFrame();
    }
}

Class GUI
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class GUI implements ActionListener{
 
    JFrame jFrame = new JFrame();
    JPanel comboBox = new JPanel();
    JPanel button = new JPanel();
    JPanel image = new JPanel();
    JLabel jLabel = new JLabel();
    JButton go = new JButton("Go");
 
    String[] number = new String[] {"1044", "1045", "1046", "1054"};
    String numberImage = null;
 
 
    public void getFrame() {
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jFrame.setSize(new Dimension( 500, 500));
 
        go.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jLabel.setIcon(new ImageIcon("./img/" +numberImage + ".png"));
            }
        });
 
        JComboBox<String> jComboBox = new JComboBox<String>(number);
        jComboBox.setSelectedIndex(3);
        jComboBox.addActionListener(this);
 
 
        comboBox.add(jComboBox);
        button.add(go);
        image.add(jLabel);
 
        jFrame.add(comboBox, BorderLayout.PAGE_START);
        jFrame.add(button, BorderLayout.CENTER);
        jFrame.add(image, BorderLayout.PAGE_END);
 
        jFrame.setVisible(true);
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        numberImage = (String)cb.getSelectedItem();
    }
}

На всякий случай и сам проект прикреплю, вдруг пригодиться.

p.s. Ну вообщем, теперь то у тебя точно должно получится разобраться, как работает JComboBox=)
Вложения
Тип файла: zip JComboBox.zip (136.9 Кб, 7 просмотров)
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 16:32
Успехов в освоении Java GUI
1
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
23.12.2014, 16:47  [ТС]
нифига пока не понял, но и на этом огромное спасибо!
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
23.12.2014, 17:20
хех=) По началу всегда так=)
Будут новое вопросы, создавай новые темы, чем сможем - поможем=)
1
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
23.12.2014, 19:18  [ТС]
Subik, обязат! Пасиб!
пока главное то доделать...

Добавлено через 1 час 32 минуты
все, я сдаюсь....теперь окончательно запутался.
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
24.12.2014, 05:10
Цитата Сообщение от Sqwartl Посмотреть сообщение
.теперь окончательно запутался
В чем запутался?
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
24.12.2014, 09:26  [ТС]
Сперва не до конца понял, почему в примере GUI создано два раза JComboBox...вроде почти понятно.
Понимаю, что тупо не выходит, воткнуть это:
Кликните здесь для просмотра всего текста
Java
1
2
3
String numberImage = combo.getSelectedItem();
***
Image image = new ImageIcon(numberImage + ".jpg").getImage();

так как переменные в разных методах... но не понимаю как переделть "свой код", чтоыб все заработало.
Он изначально был создан "солянкой"(не мной)...В общем два месяца принудительного изучения явы, дальше калькулятора не принесли результат)
0
 Аватар для Subik
170 / 45 / 5
Регистрация: 10.01.2013
Сообщений: 424
24.12.2014, 11:14
Sqwartl, Ну тут я тебе могу посоветовать, уделить больше времени изучению java=)
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 14
24.12.2014, 12:54  [ТС]
Время - этот как раз то, чего у нас нет(с).
Спасибо(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2014, 12:54
Помогаю со студенческими работами здесь

Lazy Load - "Ленивая подгрузка изображений" Нужно добавить исключение на некоторые изображения
Здравствуйте. Столкнулся с такой неприятной проблемой при оптимизации сайта... Установил Lazy Load для отложенной загрузки картинок, так...

Список изображений
Как сделать что-то похожее на это то есть, чтобы из приложения можно было открыть выбор файла

список изображений
подскажите пожалуйста , просто как называется зацикленный список &quot;превью&quot; изображений , что бы я нашел что нибудь в интернете, только...

Список изображений с высотой и шириной в процентах от значения
Есть группа изображений не пойму как сделать так чтобы у картинок высота также уменьшалась вместе с длинной пропорционально, а то если окно...

Как из DLL вызвать список хранящихся в ней изображений
Всем доброго дня. Суть проблемы такая - создал dll для хранения картинок, и теперь могу при необходимости из программы загружать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru