2013-03-13 3 views
0

내부/다시로드 이미지를 새로 고침하는 방법은 데이터가 데이터베이스에 제출 인 JPanel의 배경 이미지를 다시로드해야합니다. 데이터베이스에서 이미지를 채우는 JPanel을 만듭니다. 그리고 이미지를 업데이트하고 제출하면 배경이 자동으로 변경됩니다. 또한 repaint() 및 revalidate() 사용하려고하지만 작동하지 않습니다. 응용 프로그램을 다시 시작하고 다시 실행해야합니다. 는 JPanel의

는 JPanel의에서 배경을 표시하려면 코드입니다.

public void getLogo(Company company, PanelCompany view) { 
     JPanel panel = new BackgroundImage(company.getLogoBlob()); 
     panel.revalidate(); 
     panel.setVisible(true); 
     panel.setBounds(10, 10, 120, 120); 
     view.getPanelPhoto().add(panel); 
} 

이 내 도우미 클래스 :

public class BackgroundImage extends JPanel{ 
    private Image image; 

    public BackgroundImage (InputStream input) { 
     try { 
      image = ImageIO.read(input); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void paintComponent(Graphics grphcs) { 
     super.paintComponent(grphcs); 
     Graphics2D gd = (Graphics2D) grphcs.create(); 
     gd.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
     gd.dispose(); 
    } 
} 

모든 솔루션을? :)

답변

2

하기 전에 먼저 귀하의 관심을 주셔서 감사합니다, 당신의 헬퍼 클래스는 자신의 크기입니다 설정해야합니다.

둘째, 당신은 단지 JPanelGraphics 인스턴스를 사용해야합니다.

public class BackgroundImage extends JPanel{ 
    private Image image; 

    public BackgroundImage (InputStream input) { 
     try { 
      image = ImageIO.read(input); 
      setPreferredSize(new Dimension(image.getWidth(), image.getHeight())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void paintComponent(Graphics grphcs) { 
     super.paintComponent(grphcs); 
     Graphics2D g2d = (Graphics2D) grphcs; 
     g2d.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
    } 
} 

이제 귀하의 전화는 다음과 같이 보입니다.

public void getLogo(Company company, PanelCompany view) { 
     JPanel panel = new BackgroundImage(company.getLogoBlob()); 
     view.getPanelPhoto().add(panel); 
} 

귀하의 PanelCompany 클래스 레이아웃 매니저를 사용해야합니다. 여기에 Oracle's Visual Guide to Layout Managers이 있습니다.

하나를 선택하십시오.

+0

@GilbertLeBlanc : 재정 고려'getPreferredSize' 제안 같이 여기 (http://stackoverflow.com/q/7229226/230513) – trashgod