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

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

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

Доброго времени суток, сделал тестовый пример из JLabel подключил на него таймер который долбит и меняет переменную с текстом и картинкой, в трейсе переменная меняется а JLabel не обновляется, перекопал весь google и ничего (
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);
}
разбил код представленный выше на 3 части, вызвал у JFrame revalidate, сработал таймер и ОО JLabel сменил картинку. Просто по из любопытства попробую завтра положить JLabel в JPanel и посмотреть что будет при revalidate JPanel, как не хочется долбить JFrame, хоть по нему и не видно ) И все таки это как то не удобно все, код обрастает до безумства, какими то уловка и окольными путями, простой подмены не сделать не стереть и не пересоздать, чем дальше тем чудесее и чудесее.

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

textual
Листинг программы
    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);
    }

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


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

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

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