296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
1

Перерисовать Jlabel

09.04.2017, 04:30. Показов 1143. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, сделал тестовый пример из JLabel подключил на него таймер который долбит и меняет переменную с текстом и картинкой, в трейсе переменная меняется а JLabel не обновляется, перекопал весь google и ничего (

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void weather()
{
    System.out.println(data[0]);
    ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
    JLabel la = new JLabel();
    la.setBounds(23, 340, 170, 170);
    la.setOpaque(true);
    la.setBackground(new Color(0,0,0,70));
    la.setIcon(icon);
    la.setText(data[1]);
    la.setForeground(Color.WHITE);
    la.setFont(new Font("Verdana", 3, 16));
    la.setHorizontalAlignment(SwingConstants.CENTER);
    la.setVerticalAlignment(SwingConstants.TOP);
    la.setVerticalTextPosition(JLabel.BOTTOM);
    la.setHorizontalTextPosition(JLabel.CENTER);
                    
    window.add(la);
}
Добавлено через 2 часа 23 минуты
разбил код представленный выше на 3 части, вызвал у JFrame revalidate, сработал таймер и ОО JLabel сменил картинку. Просто по из любопытства попробую завтра положить JLabel в JPanel и посмотреть что будет при revalidate JPanel, как не хочется долбить JFrame, хоть по нему и не видно )

И все таки это как то не удобно все, код обрастает до безумства, какими то уловка и окольными путями, простой подмены не сделать не стереть и не пересоздать, чем дальше тем чудесее и чудесее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2017, 04:30
Ответы с готовыми решениями:

Перерисовать картинку
У меня есть форма (jFrame). Можно ли без добавления jPanel перерисовывать картинку? public class...

Картинка в jLabel
Написал прогу которая делает скрины экрана и сохраняет их, также я скрин отражаю в jLabel...

JLabel в JTable
Мне нужно сделать вывод JLabel в ячейках JTable, но не смотря на рендерер и другое, всё равно...

JPanel и JLabel's
Здравствуйте, необходимо сделаю такую штуку (картинку вложил). Думал реализовать через JLabel...

2
Форумчанин
5955 / 4190 / 405
Регистрация: 28.12.2013
Сообщений: 24,134
09.04.2017, 14:21 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void weather()
{
    System.out.println(data[0]);
    ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
    JLabel la = new JLabel();
    la.setBounds(23, 340, 170, 170);
    la.setOpaque(true);
    la.setBackground(new Color(0,0,0,70));
    la.setIcon(icon);
    la.setText(data[1]);
    la.setForeground(Color.WHITE);
    la.setFont(new Font("Verdana", 3, 16));
    la.setHorizontalAlignment(SwingConstants.CENTER);
    la.setVerticalAlignment(SwingConstants.TOP);
    la.setVerticalTextPosition(JLabel.BOTTOM);
    la.setHorizontalTextPosition(JLabel.CENTER);
    
    window.remove(la);           
    window.add(la);
}
вообще лучше объявить лейбл за пределами метода а в самом методе уже определять его
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
09.04.2017, 21:02  [ТС] 3
Что то не работает ( переменная меняется а la нет, можно поподробней пожалуйста о
Цитата Сообщение от WyPik Посмотреть сообщение
объявить лейбл за пределами метода а в самом методе уже определять его
Добавлено через 38 минут
С JPanel все тоже работает и обновляется как нужно, на данный момент рабочий механиз выглядит вот - есть булева переменная "blok", по таймеру стучу в the_weather_start где идет проверка куда идти дальше, при первом запуске создает при всех последующих перерисовываем.

прям страна чудес ) прямо пойдешь ни хрена не найдешь )

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
    private void the_weather_start()
    {
        if (blok == false){the_weather();}else{the_weather_static();}
    }   
    
    private void the_weather_static()
    {
        ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
        la.setText(data[1]);
        la.setIcon(icon);
        
        box.revalidate();
        box.repaint();
    }
    
    
    private void the_weather()
    {
        blok = true;
        
        ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
        la = new JLabel();
        la.setBackground(new Color(0,0,0,70));
        la.setIcon(icon);
        la.setText(data[1]);
        la.setForeground(Color.WHITE);
        la.setFont(new Font("Verdana", 3, 16));
        la.setHorizontalAlignment(SwingConstants.CENTER);
        la.setVerticalAlignment(SwingConstants.TOP);
        la.setVerticalTextPosition(JLabel.BOTTOM);
        la.setHorizontalTextPosition(JLabel.CENTER);
        
        box.setBounds(23, 340, 170, 170);
        box.setOpaque(false);
        box.add(la);
        
        window.add(box);
    }
0
09.04.2017, 21:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2017, 21:02
Помогаю со студенческими работами здесь

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

Странность с JLabel
Есть код: JLabel 1 = new JLabel("1"); frame.add(1); ...

Смещение JLabel
Есть вот такая схема: public static void MainGame() throws IOException { //SCREEN ...

Нажатие на JLabel
Как сделать реакцию на нажатие на JLabel? (В идеале нужно, чтобы реакция происходила в каком-то...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru