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

Не обновляется изображение в JLabel

09.10.2015, 14:30. Показов 780. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, загружаю изображение в JLabel (image1), загружается нормально, обновляется. Нажимаю кнопку Кодировать(btnEncode), должно появиться точно такое изображение только в другом JLabel (image2) при первой попытке все работает, а вот когда я снова повторю действия (Загружу новое изображение, нажму на кодировать) то появляется старое изображение, нужно чтобы обновило и новое было.

View
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
package swing;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
 
public class ViewApplication {
    public JFrame frame;
    public String filename;
    private JPanel centerPanel;
    private JPanel southPanel;
    public JLabel image1;
    public JLabel image2;
    private JButton btnLoadImage;
    private JButton btnEncode;
    private JButton btnDecode;
    private JButton btnExit;
    JFileChooser fileChooser = new JFileChooser();
    String pathImageDecode = "C:\\Users\\Denis Stifler\\IdeaProjects\\TestImage\\resources\\Decode.jpg";
 
    public ViewApplication() throws IOException {
     initComponents();
    }
 
    public void initComponents() throws IOException {
        frame = new JFrame();
        centerPanel = new JPanel();
        southPanel = new JPanel();
        image1 = new JLabel();
        image2 = new JLabel();
        btnLoadImage = new JButton();
        btnEncode = new JButton();
        btnDecode = new JButton();
        btnExit = new JButton();
        frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        frame.getContentPane().add(centerPanel, BorderLayout.CENTER);
        frame.getContentPane().add(southPanel, BorderLayout.SOUTH);
 
        centerPanel.setLayout(new GridLayout(1, 2));
        centerPanel.add(image1);
        centerPanel.add(image2);
 
        southPanel.setLayout(new GridLayout(3, 2));
        btnLoadImage.setText("Загрузить изображение");
        southPanel.add(btnLoadImage);
 
        btnEncode.setText("Кодировать");
        southPanel.add(btnEncode);
 
        btnExit.setText("Выход");
        southPanel.add(btnExit);
 
        btnDecode.setText("Декодировать");
        southPanel.add(btnDecode);
 
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        frame.setBounds((screenSize.width - 800) / 2, (screenSize.height - 500) / 2, 800, 500);
 
        btnLoadImage.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                openImage();
            }
        });
 
        btnExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                frame.getDefaultCloseOperation();
            }
        });
 
        btnEncode.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    new EncodeDecodeImage(filename);
                    openImage2();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        });
    }
 
    public void openImage() {
        fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        fileChooser.setAcceptAllFileFilterUsed(false);
        int ret1 = fileChooser.showDialog(null, "Выбрать файл");
        if (ret1 == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            filename = fileChooser.getSelectedFile().getPath();
            JLabel imageLabel = new JLabel(new ImageIcon(filename), 0);
            image1.setLayout(new FlowLayout());
            image1.removeAll();
            image1.add(imageLabel);
            image1.setVisible(false);
            image1.setVisible(true);
        }
 
    }
 
    public JLabel openImage2() throws IOException {
        centerPanel.removeAll();
        centerPanel.add(image1);
        centerPanel.add(image2);
        centerPanel.revalidate();
        JLabel image = new JLabel(new ImageIcon(pathImageDecode), 0);
            image2.setLayout(new FlowLayout());
            image2.removeAll();
            image2.revalidate();
            image2.repaint();
            image2.setVisible(false);
            image2.add(image);
            image2.setVisible(true);
        return image2;
    }
}
EncodeDecode
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
package swing;
 
import java.io.*;
import org.apache.commons.codec.binary.Base64;
 
public class EncodeDecodeImage {
    ViewApplication viewApplication = new ViewApplication();
    File f;
    EncodeDecodeImage(String filename) throws IOException {
        File imageFileData = new File(filename);
        try {
            FileInputStream imageFile = new FileInputStream(imageFileData);
            byte imageData[] = new byte[(int) imageFileData.length()];
            imageFile.read(imageData);
            byte[] base64EncodedByteArray = Base64.encodeBase64(imageData);
            imageFile.close();
 
            File f_write = new File("C:\\Users\\Denis Stifler\\IdeaProjects\\TestImage\\resources\\image.txt");
            try (BufferedWriter output = new BufferedWriter(new FileWriter(f_write))) {
                for (byte encode : base64EncodedByteArray) {
                    output.write(encode);
                }
                output.close();
            }
            f = new File("C:\\Users\\Denis Stifler\\IdeaProjects\\TestImage\\resources\\image.txt");
            String str = "";
            try (BufferedReader fin = new BufferedReader(new FileReader(f))) {
                String line;
                while ((line = fin.readLine()) != null) {
                    str += line;
                }
                fin.close();
                byte[] b = str.getBytes();
                byte[] base64DecodedByteArray = Base64.decodeBase64(b);
                FileOutputStream imageOutFile = new FileOutputStream(viewApplication.pathImageDecode);
                imageOutFile.write(base64DecodedByteArray);
                imageOutFile.close();
            }
            System.out.println("Image successfully encoded and decoded");
        } catch (FileNotFoundException e) {
            System.out.println("Image Not Found on that Location" + e);
        } catch (IOException ex) {
            System.out.println("Problem in Reading The Image" + ex);
        }
 
 
    }
}
Main
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package swing;
 
public class Main {
    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try{
                    new ViewApplication().frame.setVisible(true);
                }
                catch(Exception e){
                    e.printStackTrace();
                }
            }
        });
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2015, 14:30
Ответы с готовыми решениями:

Не обновляется JLabel из второго потока
:cry: Учусь работать многопоточно. Создал второй поток с генератором тактов. На нем основал время работы программы. То-есть с задержкой в 1...

Не добавляется изображение в JLabel
Файл tigh.png лежит в пакете tightness Пробовал разными способами TighPanel() { GridBagLayout gbag = new GridBagLayout (); ...

Подогнать изображение в JLabel, Swing
Я отображаю ImageIcon на JLabel: ImageIcon image = new ImageIcon("Image.gif"); JLabel imageLabel = new JLabel(image); как...

1
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
09.10.2015, 17:12
JComponent.updateUI()

если JLabel на JPanel находится, то вроде JPanel.updateUI();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2015, 17:12
Помогаю со студенческими работами здесь

Очень медленно обновляется изображение и всё прочее так же тормозит
Очень медленно обновляется изображение и всё прочее так же тормозит. Ноут Compaq, модель хз, да и это как я понимаю не важно. собственно...

Часто на 8-ке не обновляется (или криво обновляется) индекс вида после
Часто на 8-ке не обновляется (или криво обновляется) индекс вида после рефреша дизайна. Такого в 6-ке не было точно. Сервак 8-ой криво...

Каждые 2 секунды формируется ответ с сервера и div обновляется. Как подвесить к нему событие, если он обновляется?
Посоветуйте, как поступить? Есть небольшой div, в котором выводится список файлов на сервере (ajax'ом каждые 2 секунды). Мне нужно...

Файл обновляется, но не обновляется
Добрый день, господа и дамы! Есть программка для некоторых преобразований изображений. В ней есть редактор изображений, вот только...

Динамические jLabel
Всем привет.... Я никак не могу победить следущую беду. Задача следущая. Задаются значения. От - До. и шаг. т.е задается от = 1.0 до...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru