已知很多点的坐标,用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方法来绘制点,并将颜色设置为当前点的颜色。
运行代码后,会在一个窗口中显示出所有点,并且颜色深度越深的点出现的次数越多。
解决 无用评论 打赏 举报
悬赏问题
- ¥100 求数学坐标画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站