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

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Перерисовать Jlabel»

textual
Листинг программы
  1.     private void the_weather_start()
  2.     {
  3.         if (blok == false){the_weather();}else{the_weather_static();}
  4.     }  
  5.    
  6.     private void the_weather_static()
  7.     {
  8.         ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
  9.         la.setText(data[1]);
  10.         la.setIcon(icon);
  11.        
  12.         box.revalidate();
  13.         box.repaint();
  14.     }
  15.    
  16.    
  17.     private void the_weather()
  18.     {
  19.         blok = true;
  20.        
  21.         ImageIcon icon = new ImageIcon("weather/"+data[0]+".png");
  22.         la = new JLabel();
  23.         la.setBackground(new Color(0,0,0,70));
  24.         la.setIcon(icon);
  25.         la.setText(data[1]);
  26.         la.setForeground(Color.WHITE);
  27.         la.setFont(new Font("Verdana", 3, 16));
  28.         la.setHorizontalAlignment(SwingConstants.CENTER);
  29.         la.setVerticalAlignment(SwingConstants.TOP);
  30.         la.setVerticalTextPosition(JLabel.BOTTOM);
  31.         la.setHorizontalTextPosition(JLabel.CENTER);
  32.        
  33.         box.setBounds(23, 340, 170, 170);
  34.         box.setOpaque(false);
  35.         box.add(la);
  36.        
  37.         window.add(box);
  38.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.467 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут