Как получить BufferedImage от не легкого компонента в Java? - PullRequest
2 голосов
/ 05 октября 2010

Я использовал следующий метод, пытаясь получить BufferedImage от не легкого компонента, но я получил черное изображение, поэтому оно не работает, компонент, который я передал ему, является объектом WebBrowser из JDIC, ​​это не легкий вес компонента:

  public static BufferedImage getComponentImage(Component aComponent,Rectangle region) throws IOException
  {
     BufferedImage image= new BufferedImage(aComponent.getWidth(),aComponent.getHeight(),BufferedImage.TYPE_INT_RGB);
     Graphics2D g2d=image.createGraphics();
     SwingUtilities.paintComponent(g2d,aComponent,aComponent.getParent(),region);
     g2d.dispose();
/*
     Graphics g = image.getGraphics();
     aComponent.paint(g);
  // aComponent.paintAll(g);
  // SwingUtilities.paintComponent(g,aComponent,aComponent.getParent(),region);
     g.dispose();
*/
     return image;
  }

Я также пробовал строки в комментариях, они тоже не работали, так как захватить BufferedImage из не легкого компонента в java?

1 Ответ

0 голосов
/ 05 октября 2010

Документация SwingUtilities.paintComponent гласит: «Если компонент не является легковесным, происходит плохая карта: сбои, исключения, проблемы с рисованием ...», поэтому ваши результаты не являются неожиданными.

Похоже, что CellRenderPane имеетнет таких ограничений: вы можете попробовать это.В качестве альтернативы вы можете попробовать вызвать paint () непосредственно для компонента, но это обычно вызывает проблемы, если компонент не внедрен в иерархию компонентов правильно.

...