java 怎样展示二维画矩阵图_如何用java绘制矩阵的图

本文介绍了使用Java绘制二维矩阵图的多种方法,包括通过数组转换为图片、使用JFreeChart、JavaFX图表组件以及直接利用BufferedImage和Graphics类。JFreeChart适合静态图表,JavaFX则提供美观的动态效果,而BufferedImage则允许高度自定义。文中还提供了JavaFX动态饼状图的示例代码。
摘要由CSDN通过智能技术生成

展开全部

如果读取得到的二维数组 ,存储的是每个像素的颜色值32313133353236313431303231363533e59b9ee7ad9431333365656565 , 那么很简单, 可以使用 数组转换到图片(网上有很多的代码) , 然后绘制到JFrame等窗体上.如果读取的二维数组,是类似于下面这种形式{{2018,20},{2017,30},{2016,15}}可以使用第三方的 JFreeChart 等 进行图表绘制, 优点 可以输出图片,可以显示到网页或者JFrame/Frame窗口上. 缺点: 效果不是很好看.实现动态效果比较麻烦

可以使用JavaFX 自带的图表组件进行绘制. 优点: 默认的效果不错, 动态效果实现起来也很简单 缺点: 一般只用于本地客户端上的显示

使用 BufferedImage和Graphics 类来绘制 一个图片, 优点: 自定义程度高, 可以充分发挥想象,绘制一个拉风的效果. 缺点: 有点麻烦.代码有点长了.[一般只用于验证码等小图片的绘制]

JFreeChart 效果图

6a703ff0692d38ebffde311b453ca66c.png

JavaFX 效果图( 里面的数据是随即生成的,只是为了测试效果)

2b1009527363f05725c8a4a5c0f0c353.gif

0bc24ae724b0228ce9121a7aeac24797.gif

JavaFX饼状图的参考代码 ,我写了很多的注释import javafx.animation.*;

import javafx.application.Application;

import javafx.collections.*;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.geometry.Side;

import javafx.scene.Scene;

import javafx.scene.chart.PieChart;

import javafx.scene.chart.PieChart.Data;

import javafx.scene.control.*;

import javafx.scene.effect.DropShadow;

import javafx.scene.input.MouseEvent;

import javafx.scene.layout.StackPane;

import javafx.scene.paint.Color;

import javafx.stage.Stage;

import javafx.util.Duration;

//

public class A03_PieChart03 extends Application {

public static void main(String[] args) {

launch(args);//启动程序

}

@Override

public void start(Stage primaryStage) throws Exception {

StackPane root = new StackPane();// 栈布局面板

Scene scene = new Scene(root, 500, 400);//场景

PieChart pc = new PieChart();//饼状图

ObservableList datas = getDate();

pc.setData(datas);//设置饼状图的初始数据

pc.setTitle("流行技术市场占有率");// 设置饼图标题

pc.setLegendSide(Side.LEFT);// 图例 靠左

pc.setClockwise(false);// 逆时针显示

//pc.setLabelsVisible(false);// 隐藏饼状图上面的文字描述

DropShadow ds=new DropShadow(); // 阴影效果

ds.setOffsetX(3);//x轴偏移3

ds.setColor(Color.GREY);//阴影颜色

pc.setEffect(ds);//给饼状图设置阴影效果

root.getChildren().add(pc);//把饼状图添加到面板上

primaryStage.setTitle("动态饼状图");//设置标题

primaryStage.setScene(scene);//设置主场景

primaryStage.show();//显示窗口

// -------如果需要动态效果 , 那么就需要下面的代码---------

Timeline tl = new Timeline(); //时间轴动画

tl.getKeyFrames().add(new KeyFrame(Duration.millis(800), new EventHandler() {

@Override

public void handle(ActionEvent event) {

for (Data data : pc.getData()) {

data.setPieValue(Math.random()*50);//数据随即改变.(只是为了测试效果)

}

}}));

tl.setCycleCount(Animation.INDEFINITE);//循环次数无限

tl.play(); // 开始动画

}

// 初始的数据

private ObservableList getDate() {

ObservableList data = FXCollections.observableArrayList(new PieChart.Data("Java", 36.8),

new PieChart.Data("C++", 16.2), new PieChart.Data("Python", 12.3), new PieChart.Data("Ruby", 9.5),

new PieChart.Data("JavaScript", 21.5));

return data;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值