已知很多点的坐标,用java把点显示出来,并且重复越多的点显示的颜色越深
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 19:26关注
该回答引用ChatGPT-3.5
要在Java中显示坐标点,可以使用SWT(Standard Widget Toolkit)视图。SWT是一个Java图形界面库,它提供了创建本地GUI控件的API,可以与操作系统的本地GUI库进行交互。
以下是一个简单的Java SWT代码示例,可以绘制点并且根据点出现的频率设置点的颜色深度。代码示例中使用的是SWT的Canvas类,它是一个可绘制的画布控件,可以在上面绘制图形:
import java.util.*; import org.eclipse.swt.*; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class PointFrequencyColor { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Canvas canvas = new Canvas(shell, SWT.NONE); List<Point> points = Arrays.asList( new Point(100, 100), new Point(150, 150), new Point(200, 200), new Point(150, 150), new Point(150, 150), new Point(250, 250), new Point(200, 200), new Point(250, 250), new Point(200, 200) ); canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { Map<Point, Integer> pointFrequency = new HashMap<>(); for (Point p : points) { pointFrequency.put(p, pointFrequency.getOrDefault(p, 0) + 1); } int maxFrequency = pointFrequency.values().stream().max(Integer::compareTo).orElse(0); GC gc = e.gc; for (Map.Entry<Point, Integer> entry : pointFrequency.entrySet()) { Point p = entry.getKey(); int frequency = entry.getValue(); double colorFactor = (double) frequency / maxFrequency; int colorIntensity = (int) (colorFactor * 255); Color color = new Color(display, colorIntensity, colorIntensity, colorIntensity); gc.setForeground(color); gc.drawPoint(p.x, p.y); color.dispose(); } } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
代码中定义了一个包含一些点坐标的List,然后使用一个HashMap来记录每个点出现的次数。接着,计算出所有点中出现最多的次数,以便在之后的绘制中计算点颜色深度。在绘制每个点时,先根据点出现的频率计算出颜色深度,然后使用GC类的drawPoint方法来绘制点,并将颜色设置为当前点的颜色。
运行代码后,会在一个窗口中显示出所有点,并且颜色深度越深的点出现的次数越多。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 MATLAB动图的问题
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名