我一直试图让Graphics2d对象无法正常工作。我在Oracle教程网站和Stackoverflow上搜索了一个答案而没有找到答案。
我遇到的问题是当我调用方法lineTo,fill和drawRect时,我的窗口中出现一个空白的灰色方块,而不是我想要的形状。
package main;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GraphicsTesting extends JPanel {
private static final long serialVersionUID = 6096199371167913312L;
static BufferedImage buffImag = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
static Graphics2D graff = buffImag.createGraphics();
Point2D.Double point = new Point2D.Double(10, 10);
static Graphics gra = buffImag.createGraphics();
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
GeneralPath gp = new GeneralPath(GeneralPath.WIND_EVEN_ODD, 4);
gp.moveTo(30, 55);
gp.lineTo(168, 384);
gp.lineTo(462, 81);
gp.lineTo(321, 423);
gp.lineTo(269, 243);
g2.setColor(new Color(112, 150, 134));
g2.fill(gp);
g2.setColor(new Color(56, 112, 232));
g2.draw(gp);
g2.setColor(new Color(152, 1, 210));
g2.drawRect(25, 152, 380, 405);
g2.drawImage(buffImag, 0, 0, 500, 0, 0, 500, 500, 500, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
GraphicsTesting gT = new GraphicsTesting();
frame.setContentPane(gT);
gT.paint(gra);
}
}
答案 0 :(得分:1)
您的代码似乎很好,我试图在我的机器上运行它。它会产生您在following screen shot上看到的内容。我想这就是你期望得到的,对吧?您的问题可能来自错误的Java安装或与操作系统相关的问题。您使用的是哪个虚拟机以及在哪个操作系统上运行?
作为旁注,您的代码不完整,因为缺少以下导入
import java.awt.geom.Point2D;
答案 1 :(得分:0)
您的代码存在多个问题,但导致问题的主要问题是您在向其添加面板之前使框架可见。
将setVisible(true)
行移至此处:
frame.setContentPane(gT);
frame.setVisible(true);
gT.paint(gra);