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

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

09.10.2015, 14:30. Показов 754. Ответов 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
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru