当前位置:首页 > Java

如何用java画图

2026-01-16 15:55:24Java

使用 Java 绘图基础

Java 提供了多种绘图方式,主要通过 java.awtjavax.swing 包中的类实现。以下是几种常见的绘图方法。

使用 Graphics 类绘图

Graphics 类是 Java AWT 中用于绘图的核心类,可以绘制线条、形状、文本等。

如何用java画图

import javax.swing.*;
import java.awt.*;

public class SimpleDrawing extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.drawLine(10, 10, 100, 100); // 画一条线
        g.setColor(Color.BLUE);
        g.drawRect(50, 50, 100, 80);  // 画矩形
        g.fillOval(150, 150, 80, 80); // 填充椭圆
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Drawing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.add(new SimpleDrawing());
        frame.setVisible(true);
    }
}

使用 Graphics2D 增强绘图功能

Graphics2DGraphics 的子类,提供了更高级的绘图功能,如旋转、缩放和渐变填充。

import javax.swing.*;
import java.awt.*;

public class Graphics2DDemo extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.GREEN);
        g2d.setStroke(new BasicStroke(5)); // 设置线条宽度
        g2d.draw(new Rectangle(50, 50, 150, 100));

        GradientPaint gradient = new GradientPaint(100, 100, Color.RED, 200, 200, Color.YELLOW);
        g2d.setPaint(gradient);
        g2d.fill(new Ellipse2D.Double(100, 100, 150, 150));
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Graphics2D Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.add(new Graphics2DDemo());
        frame.setVisible(true);
    }
}

使用 BufferedImage 进行离屏绘图

BufferedImage 允许在内存中创建图像并进行操作,适合复杂绘图或图像处理。

如何用java画图

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

public class BufferedImageDemo extends JPanel {
    private BufferedImage image;

    public BufferedImageDemo() {
        image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = image.createGraphics();
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, 200, 200);
        g2d.setColor(Color.BLUE);
        g2d.drawString("Hello, Java!", 50, 100);
        g2d.dispose();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 50, 50, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("BufferedImage Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.add(new BufferedImageDemo());
        frame.setVisible(true);
    }
}

使用 JavaFX 绘图

JavaFX 提供了更现代的绘图 API,适合创建复杂的图形和动画。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class JavaFXDrawing extends Application {
    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        Line line = new Line(10, 10, 100, 100);
        line.setStroke(Color.RED);
        pane.getChildren().add(line);

        Rectangle rect = new Rectangle(50, 50, 100, 80);
        rect.setFill(Color.BLUE);
        pane.getChildren().add(rect);

        Circle circle = new Circle(150, 150, 40);
        circle.setFill(Color.GREEN);
        pane.getChildren().add(circle);

        Scene scene = new Scene(pane, 300, 300);
        primaryStage.setTitle("JavaFX Drawing");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

绘图库和工具

对于更复杂的绘图需求,可以使用第三方库如 JFreeChart(图表绘制)或 Processing(创意编程)。

// 使用 JFreeChart 绘制柱状图
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;

public class JFreeChartDemo extends JFrame {
    public JFreeChartDemo() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Series 1", "Category 1");
        dataset.addValue(20, "Series 1", "Category 2");
        dataset.addValue(30, "Series 1", "Category 3");

        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Demo", "Category", "Value", dataset);
        ChartPanel panel = new ChartPanel(chart);
        setContentPane(panel);
    }

    public static void main(String[] args) {
        JFreeChartDemo demo = new JFreeChartDemo();
        demo.setSize(500, 400);
        demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        demo.setVisible(true);
    }
}

以上方法涵盖了从基础到高级的 Java 绘图技术,适用于不同的需求和场景。

标签: 画图如何用
分享给朋友:

相关文章

如何用css制作网页

如何用css制作网页

使用CSS制作网页的基本方法 CSS(层叠样式表)用于控制网页的样式和布局。以下是一些基本步骤和技巧: 创建CSS文件 新建一个.css文件,例如style.css。在HTML文件中通过<li…

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorld…

如何用记事本写java

如何用记事本写java

使用记事本编写Java代码的方法 安装Java开发工具包(JDK)并配置环境变量。确保在命令行输入java -version和javac -version能正确显示版本信息。 创建一个新文本文件,…

如何用java做游戏

如何用java做游戏

使用Java开发游戏的基本方法 Java是一种跨平台的编程语言,适合开发2D游戏甚至简单的3D游戏。以下是使用Java开发游戏的主要方法和工具。 选择游戏开发框架 Java游戏开发通常依赖以下框架…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功:…