2012-06-03 2 views
0

jInternalFrame 특정 파일을 그림으로 저장하려고합니다. 내부 프레임은 의 에 jFrame에 있습니다. 판독 값은 내부 프레임의 50 %를 제외하고는 괜찮습니다. 나머지 판독 값을 표시하지 않으므로 오류가 없습니다. 이미지의 견해를 넓히고 싶습니다 ... 누구든지 나를 도울 수 있습니까? 여기 Java에 파일을 쓰는 동안 특정 읽기를 생성하는 데 문제가 있습니다.

는 온 클릭 리스너를 통해 활성화되는 방법 :

private void tallennus() { 
    setContentPane(jInternalFrame1); 
    this.pack(); 

    Dimension size = jInternalFrame1.getSize(); 
    BufferedImage image = new BufferedImage(size.width, (int)PageSize.A4.getHeight()+(int)PageSize.A4.getHeight(), 
    BufferedImage.TYPE_INT_RGB); 
    Graphics2D g2 = image.createGraphics(); 
    g2.setBackground(Color.WHITE); 
    g2.clearRect(jInternalFrame1.getX(),jInternalFrame1.getY(),size.width,(int)PageSize.A4.getHeight() + (int)PageSize.A4.getHeight()); 
    g2.fillRect(jInternalFrame1.getX(),jInternalFrame1.getY(),size.width,(int)PageSize.A4.getHeight() + (int)PageSize.A4.getHeight()); 
    g2.scale(1, 0.75); 

    super.setPreferredSize(size); 
    super.paintComponents(g2); 
+1

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

2
  • paintComponents(를 사용하여 도장하지 ) 사용 paintComponent()

  • 받는 배경에서 도장하지 JInternalFrame을 사용하여 paintComponent()을 직접 사용하여

  • JPanel 또는 당신은 단지 Icon 실제 답변을위한하여 JLabel

  • 사용 CardLayout 대신 JInternalFrames

  • 로 이미지로드 이미지를 표시하려면 JComponent

  • 빨리 SSCCE

  • 하여 질문을 수정
+0

도움을 주셔서 감사합니다 ... 저는 현재이 답변을 연습에 적용하려고 시도하고 있습니다 ... 좋은 아이디어를주었습니다. SSCCE는 코드 페이지가 10,000 줄 이상이므로 파싱하기가 어려울 것입니다. neccecary가 포함되고 문제가됩니다. – NeedyHelpo

+0

이 노트를 적용했지만 문제는 Jinternalframe이 완전히 보이지 않지만 JScrollPane의 exsists 때문에 부분적으로 잘리는 것 같습니다 ... 보이지 않는 구성 요소를 보여 주어야합니다. – NeedyHelpo

+0

호출해야합니다. 유용한 정보를 얻으려면 컨테이너 나 컨테이너에'pack()을 한 번만 표시해야합니다. – mKorbel

0

대단히 고맙다고 생각합니다. 내게 도움이되었습니다. 문제가 .. 나는이 코드 중 일부가 중복되었음을 알지만 여전히 게시 할 것입니다.

private void tallennus(){ 

    JPanel drawingPanel = new JPanel(); 
    drawingPanel.setSize(new Dimension((int)PageSize.A4.getWidth(),(int)PageSize.A4.getHeight())); 

jPanel11.setBackground(Color.WHITE); 
jScrollPane27.setBackground(Color.WHITE); 
jPanel11.setBackground(Color.WHITE); 
jTabbedPane1.setBackground(Color.WHITE); 
jPanel10.setBackground(Color.WHITE); 
    drawingPanel.setBackground(Color.WHITE); 
    drawingPanel.setForeground(Color.WHITE); 
    add(drawingPanel); 

Container cont = jInternalFrame1; 
jInternalFrame1.pack(); 
String Ifra = jInternalFrame1.getComponents().toString(); 

BufferedImage sama = (BufferedImage) cont.createImage((int)PageSize.A4.getWidth(),(int)PageSize.A4.getHeight()+(int)PageSize.A4.getHeight()); 
drawingPanel.add(cont); 
    setContentPane(drawingPanel); 

this.pack(); 

Dimension size = drawingPanel.getSize(); 
    BufferedImage image = new BufferedImage(size.width, (int)PageSize.A4.getHeight()+400, 
    BufferedImage.TYPE_INT_RGB); 
    Graphics2D g2 = image.createGraphics(); 
    g2.setBackground(Color.WHITE); 
    g2.clearRect(0,0,size.width,(int)PageSize.A4.getHeight() + 400); 
g2.clipRect(40, 90, 1200, 1450); 

    g2.drawString(Ifra, TOP_ALIGNMENT, TOP_ALIGNMENT); 
    g2.drawImage(sama, null, cont); 
    g2.clipRect(40, 90, 1200, 1450); 

    this.pack(); 

    paint(g2); 

    try{ 
    ImageIO.write(image,"jpeg",new File("snap.jpg")); 
    } 
    catch(Exception e){} 
    } 
관련 문제