2016-08-25 9 views
0

이 JLabel "label1"에 "Pic.png"이미지를 추가하고 JFrame "window1"의 JPanel "panel1"에 표시하려고합니다. 하지만 달리면 이미지가 표시되지 않습니다. 누구 한테 도움이 되니? (내가 소스 파일이나 뭔가에 추가하는 방법에 대해 읽었지 만 Java에 익숙하지 않아서 내가 뭘하는지 잘 모르겠다. 소스에있는 이미지없이 그림에 액세스 할 수 없습니까?)레이블에 이미지를 추가하려고하지만 작동하지 않습니까?

public class UIForIshidaQuery { 

    public static void main(String[] args) { 
     System.out.println("Running..."); 

     JFrame window1 = new JFrame(); 
     window1.setVisible(true); 
     window1.setSize(1080, 720); 
     window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel1 = (JPanel) window1.getContentPane(); 
     JLabel label1 = new JLabel(); 
     panel1.setLayout(null); 
     ImageIcon image = new ImageIcon("C:\\Users\\BC03\\Pictures\\Saved Pictures\\Other\\Pic.png"); 
     label1.setIcon(image); 
     label1.setBounds(500, 500, 500, 500); 
     panel1.add(label1); 
    } 
} 
+0

새 파일 ("C : \\ 사용자 \\ BC03 \\ 그림 \ 저장 한 그림 \\ 기타 \\ 그림 .png")은 exist()'가 true를 반환합니까? – Berger

+0

[tag : embedded-resource] 태그에 인용 된 예제 [here] (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. – trashgod

+0

네, true를 반환합니다 @ Berger – Cutter

답변

2

창은 마지막 호출로 볼 수 설정해야합니다. null 레이아웃 을 사용하지 마십시오. 이 작동합니다.

import java.net.*; 
import javax.swing.*; 

public class UIForIshidaQuery { 

    public static String url = "http://i.stack.imgur.com/gJmeJ.png"; 

    public static void main(String[] args) throws MalformedURLException { 
     System.out.println("Running..."); 

     JFrame window1 = new JFrame(); 
     window1.setSize(1080, 720); 
     window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel1 = (JPanel) window1.getContentPane(); 
     JLabel label1 = new JLabel(); 
     //panel1.setLayout(null); 
     ImageIcon image = new ImageIcon(new URL(url)); 
     label1.setIcon(image); 
     //label1.setBounds(500, 500, 500, 500); 
     panel1.add(label1); 
     window1.setVisible(true); 
    } 
} 
  1. 자바 GUI를 다른 로케일에서 다른 PLAFs를 사용하는 등 다른 OS ', 화면 크기, 화면 해상도에서 작동해야합니다. 따라서, 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자를 사용하거나 white space의 레이아웃 패딩 및 테두리와 함께 combinations of them을 사용하십시오.
+0

고마워,이 작품! – Cutter

+0

위의 정보는 정확합니다. Java Swing에서 완벽한 픽셀 레이아웃을 얻는 것은 어렵습니다. 따라서 기존 코드에서 이미지를 확인하기 위해 실행하고 창을 최대화/최소화하려고하면 코드를 실행할 때 순간적으로 나타나지 않는 이미지가 나타납니다. –

1

당신이하게 IntelliJ IDEA를 사용하는 경우 :

  1. 오른쪽 프로젝트 루트 디렉토리를 클릭하고 새> 디렉토리를 선택;
  2. 예를 들어 'resources'라는 새 디렉토리를 호출하십시오.
  3. 새로 만든 디렉토리를 마우스 오른쪽 단추로 클릭하고 Mark Directory As> Resources Root를 선택하십시오.
  4. 디렉토리에 이미지 파일을 추가하십시오.
  5. 액세스 파일이 제대로 : CurrentClass.class.getClassLoader().getResource("pic.png").getFile();

이미지 아이콘은 다음과 같이 초기화 할 수는 :

File file = new File(CurrentClass.class.getClassLoader().getResource("pic.png").getFile()); 
     BufferedImage image = null; 
     try { 
      image = ImageIO.read(file); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     ImageIcon imageIcon = new ImageIcon(image); 
+0

IntelliJ IDEA를 사용하고 있지 않습니다. – Cutter

+0

죄송합니다. 추가 한 netbeans 태그를 놓쳤습니다. IntelliJ IDEA를 사용하는 다른 사용자들에게도 좋은 참고 자료입니다. – Thibstars