2
자바에서 이미지를 편집하는 프로그램을 만들고 있습니다. JPanel
에 사용자 데스크톱에서 이미지를 드래그하고 JPanel
의 배경으로 드래그 한 이미지를 설정할 수 있는지 궁금합니다. Java로 가능합니까? 그렇다면 어떻게해야할까요?이미지 드래그 앤 드롭
자바에서 이미지를 편집하는 프로그램을 만들고 있습니다. JPanel
에 사용자 데스크톱에서 이미지를 드래그하고 JPanel
의 배경으로 드래그 한 이미지를 설정할 수 있는지 궁금합니다. Java로 가능합니까? 그렇다면 어떻게해야할까요?이미지 드래그 앤 드롭
짧은 대답은 : 가능합니다.
이 작업을 수행하는 방법은 여러 가지가 있습니다. 가장 단순한 코드 인 이미지 파일을 어딘가에서 스윙 응용 프로그램으로 드래그합니다. 그러나 이미지 편집기에서 클립 보드로 이미지를 복사하여 붙여 넣을 수도 있지만, 필요하지는 않습니다. 이 두 번째 사용 사례를 구현하려면 예제에 나와있는 DataFlavor.javaFileListFlavor
대신 DataFlavor.imageFlavor
을 사용해야합니다. 따라서 아래 코드를 테스트하려면 MainPanel
의 인스턴스를 컨테이너에 추가하고 앱이 실행되면 이미지 파일을 패널로 드래그하십시오. 하지만, 나는 그것이 가능하다고 생각
public class MainPanel extends JPanel {
private Image image;
MainPanel() {
setTransferHandler(new ImageTransferHandler(this));
}
void addFiles(File[] files) {
for (File file : files) {
try {
image = ImageIO.read(file);
} catch (Exception e) {
e.printStackTrace();
}
}
if (image != null) {
repaint();
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
int width = getWidth();
int height = getHeight();
drawImage((Graphics2D) g, width, height);
}
private void drawImage(Graphics2D g2, int width, int height) {
if (image != null) {
g2.drawImage(image, 0, 0, width, height, null);
} else {
g2.drawRect(10, 10, width - 20, height - 20);
}
}
}
: 이것은가 TransferHandler로를 추가하고 오전 패널은 배경으로 이미지를 그립니다
:
이
은TransferHandler
의 구현 나는 아직이 일을 혼자하지 않았다. 자바 드래그 앤 드롭 자습서를 인터넷 검색 및 평가 해 보셨습니까? 만약 내가이 기능을 원한다면, 내가 어디에서 시작하는지, 그리고 물론 stackoverflow를 검색 할 것이다. 행운을 빌어 요! –편집 : 내가보기에 더 어려워 보입니다. 다시 말하지만, 그것은 불가능한 것처럼 보이지 않지만, 아직 간단한 해결책을 찾지 못했습니다. –
이미지 편집기 인 경우 선택한 이미지가 배경의 배경으로 설정되는 이유는 무엇입니까? –