java - Graphics2d 方法不产生输出

标签 java swing jpanel graphics2d

我一直在尝试让 Graphics2d 对象正常工作,但没有成功。我在 Oracle 教程网站和 Stackoverflow 上搜索了答案,但没有找到答案。

我遇到的问题是,当我调用方法 lineTo、fill 和 drawRect 时,我在窗口中看到一个空白的灰色方 block ,而不是我想要的形状。

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

}

最佳答案

您的代码看起来不错,我尝试在我的机器上运行它。它会生成您在 following screen shot 上看到的内容。我想这就是你所期望得到的,对吗?您的问题可能是由于 Java 安装错误或操作系统相关问题造成的。您使用的是哪个虚拟机以及哪个操作系统?

顺便说一句,您的代码并不完整,因为缺少以下导入

import java.awt.geom.Point2D;

关于java - Graphics2d 方法不产生输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21614400/

相关文章:

Java Swing - 设置背景和按钮

java - 从菜单切换到实际游戏

java - D'n'D 上的重影图像从 canvas 2d 到 canvas 3d

java - 不点击按钮最小化Jinternal Frame

java - 如何将 Java 桌面应用程序移植到 Netbeans 7.1

java - 将 JPanel 添加到 JPanel

java - JPanel 的问题

java - 如何在 java 代码中使用 javafx 更改 ScatterChart 的点颜色?

java - 从 Android 版谷歌地图 api 获取交通数据

java - JMeter 变量输出作为属性名称的一部分?