Java Graphics2d方法不产生输出

Java Graphics2d方法不产生输出,java,swing,jpanel,graphics2d,Java,Swing,Jpanel,Graphics2d,我一直试图让Graphics2d对象正常工作,但没有成功。我在Oracle教程网站和Stackoverflow上都搜索了答案,但没有找到答案 我的问题是,当我调用lineTo、fill和drawRect方法时,我在窗口中得到一个空白的灰色正方形,而不是我想要的形状 package main; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; i

我一直试图让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);
}

}

您的代码似乎很好,我试着在我的机器上运行它。它产生你能在屏幕上看到的东西。我想这就是你期望得到的,对吗?您的问题可能来自错误的Java安装或与操作系统相关的问题。您正在使用哪个虚拟机以及在哪个操作系统上

作为补充说明,您的代码并不完整,因为缺少以下导入

import java.awt.geom.Point2D;

代码中有几个问题,但导致问题的主要问题是在将面板添加到框架之前使框架可见

设置可见(true)
行移到此处:

frame.setContentPane(gT);
frame.setVisible(true);
gT.paint(gra);

适用于我的
java版本“1.7.0\u 25”
。然而,
drawImage
行有点可疑,如果不使用它,会得到什么结果?您的日志中有错误吗?(缺少导入的
Point2D
)您希望得到什么形状?包括Point2D是我的错误。我的日志不会产生任何错误。哦,我的意思是删除创建和定义新point2D的代码部分。