2011-12-21 4 views
1

Я хотел бы реализовать DragAndDrop для изображения, но не могу заставить функцию Swing repaint работать с определенным изображением.Java Swing Перерисовать изображение

Код:

public class playerFrame extends JFrame{ 
... 
    private void destroyerImageMouseDragged(java.awt.event.MouseEvent evt) 
    }            
    repaintCurrentPosition(evt); 
    }    

    public void repaintCurrentPosition(MouseEvent e){ 
     this.setLocation(e.getX(), e.getY()); 
     this.repaint(); 
    } 

< this.repaint - эта функция перерисовывает весь кадр, а не только изображение, которое я хотел бы, чтобы перекрасить, что примерно 50х50 размер. Как вы перерисовываете конкретный образ JPEG без создания нового класса?

спасибо.

ответ

0

Позвоните repaint только на панели, где изображено ваше изображение.

1

this.repaint заставит родительский кадр перекрасить. Вызовите repaint только на контроле, держащем изображение.

Пример: обновить загруженную на JLabel это изображение:

ImageIcon icon = createImageIcon("images/middle.gif"); 
label = new JLabel("Image and Text", icon, JLabel.CENTER); 

Вы делаете:

label.repaint(); 
1

Как вы делаете лобовое сопротивление и падение?

Самый простой способ - просто добавить значок в JLabel, а затем перетащить ярлык вокруг. Каждый раз вы вызываете setLocation (...) на ярлыке, который он перерисовывает().

Класс Component Mover делает всю тяжелую работу для вас.

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