已知很多点的坐标,用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 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果
- ¥15 matlab图像高斯低通滤波