2013-08-21 2 views
0

Итак, я просмотрел this thread и увидел предложение использовать HTML для изменения размера.Изменение размера JLabel ImageIcon с HTML

Я посещаю веб-сайт Oracle, но он предоставил только пример для настройки текста в JLabels с использованием HTML. Могу ли я получить пример JLabel с параметрами HTML?

+0

ли вы имеете в виду что-то вроде 'label.setText («»);'? – MadProgrammer

ответ

3

Для этого необходимо, чтобы у вас была ссылка на изображение. Это довольно легко достичь, если изображение является внедренным ресурсом (как показано ниже), но вы должны быть в состоянии генерировать URL из файла с помощью File#getURI#toURL

enter image description here

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.net.URL; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class HTMLLabel { 

    public static void main(String[] args) { 
     new HTMLLabel(); 
    } 

    public HTMLLabel() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       URL url = getClass().getResource("/Chicken.png"); 
       System.out.println(url); 

       JLabel perLabel = new JLabel("<html><img width=125 height=125 src=" + url + "></html>"); 
       JLabel orgLabel = new JLabel("<html><img src=" + url + "></html>"); 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new GridBagLayout()); 

       GridBagConstraints gbc = new GridBagConstraints(); 
       gbc.gridwidth = GridBagConstraints.REMAINDER; 

       frame.add(orgLabel, gbc); 
       frame.add(perLabel, gbc); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

} 

Следует отметить, что масштабирование это довольно сокращение. Я, лично, избегать его и просто разработать какой-то вид ImagePane что лучше масштабирования возможностей, for example

+0

Благодарим вас за полный пример. Будет ли ваша рекомендация работать и с анимированными прозрачными gif? – kir

+0

Вы можете задать вопрос об анимационных фильмах: P – MadProgrammer

+0

Вы можете попробовать взглянуть на что-то вроде [Gif4J] (http://www.gifj.com/java-gif4j-pro-gif-image-transform.htm), я Я не использовал его лично ... – MadProgrammer

Смежные вопросы