0

jInternalFrame特定のファイルを画像として保存しようとしています。internalframe はjFrameのにjTabbedPaneありjTabbedPaneます。読み出しは、内部フレームの 50% を除いて問題ありません。読み取り値の残りを表示したくないので、エラーはありません。画像の表示を拡大したい... 誰か助けてくれませんか?

オンクリックリスナーを介してアクティブ化されるメソッドは次のとおりです。

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);
4

2 に答える 2

2
于 2012-06-03T21:38:04.437 に答える
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){}
    }
于 2012-06-04T13:39:59.033 に答える