是否有可能在特定位置上绘制JPanel作为Graphics(或Graphics2D)对象? 我覆盖了画布的paint方法,并在那里调用了panel.paint(g),但是它没有像我希望的那样工作。
@Override
public void paint(Graphics g){
Dimension size = panel.getPreferredSize();
panel.setBounds(pos.x, pos.y, size.width, size.height);
panel.paint(g);
}
大小对象按照我的意愿正确定义,所以这不是问题所在。此外,pos在屏幕上包含正确的x和y。
答案 0 :(得分:1)
你可能应该使用paintComponent
而不是paint
,因为后者是AWT方法,前者是Swing方法。
关于Swing paintComponent
的一个好处是,Graphics
传递的实际上总是Graphics2D
,所以你可以:
Graphics2D g = (Graphics2D)lg;
现在,您可以使用getTransform
保存旧转换,然后使用Graphics2D
或setTranform
,scale
修改translate
的转换和rotate
方法。不要忘记恢复旧的转换,否则你可能会捏造那个上下文所绘制的下一个东西。
答案 1 :(得分:0)
我会投入其中,根据具体情况,绘制到BufferedImage可能是合适的。您可以使用BufferedImage.getGraphics()获取Graphics上下文。然后你可以通过任何适合你的方式绘制BufferedImage的上下文。