Перерисовать 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д