автоматическое изменение размера содержимого ярлыка - PullRequest
0 голосов
/ 30 апреля 2010

В моей программе есть ярлык, который отображает изображение. Проблема в том, что если выбрано изображение, размер которого превышает метку, отображается только часть изображения.

Как отобразить все изображение?

image = new ImageIcon(movpath);     
l5=new JLabel(image);
l5.setBounds(360,300,200,200);
p1.add(l5);

Требуется помощь по указанному выше коду

Ответы [ 3 ]

2 голосов
/ 30 апреля 2010

Для этого не нужно писать собственный код. JLabel автоматически изменит свой размер при изменении значка.

Проблема в том, что вы используете пустой макет, а размер установлен на (200, 200), поэтому метка не может увеличиваться или уменьшаться.

Если вы хотите иметь фиксированную область для отображения метки, добавьте метку в область прокрутки и установите предпочтительный размер области прокрутки. Тогда при необходимости появятся полосы прокрутки.

Избавьтесь от нулевого макета и создайте правильный графический интерфейс с помощью менеджеров макетов. Вы спасете себя от горя.

Поскольку вы задаете много вопросов для начинающих, я предлагаю вам начать с изучения Swing основы. Менеджеры по раскладке хорошо прикрыты.

1 голос
/ 02 мая 2010

Чтобы изменить размер изображения до размера вашего JLabel, вам необходимо следующее:

l5 = new JLabel ()
{ 
    public void paintComponent (Graphics g) 
    { 
        super.paintComponent (g); 
        g.drawImage (image.getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT), 0, 0, getWidth (), getHeight (), this); 
    } 
}; 
1 голос
/ 30 апреля 2010

Есть способ для вышеописанного сценария. Для изменения размера используйте следующий код:

image = new ImageIcon (movpath);

    l5 = new JLabel ()
    { 

        public void paintComponent (Graphics g) 
        { 
            super.paintComponent (g); 
            g.drawImage (image.getImage(), 0, 0, getWidth (), getHeight (), null); 
        } 
    }; 
    l5.setBounds(360,300,200,200);
    p1.add(l5);
    l5.addMouseListener(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...