(1)编写一个用于绘图的DrawLineComponent extends JComponent。覆盖其paintComponent方法,进行图形的绘制。该组件可以根据给定的点(Point2D)的集合,绘制出对应的曲线(相邻的两点构成线段,曲线实际上是折线)。 (2)使用上述的DrawLineComponet,分别绘制正弦曲线、余弦曲线或者画出自己编写表达式(如y=kx、y=sinx+cosx、y=e-x等)的曲线
时间: 2024-02-12 09:08:25 浏览: 103
好的,我已经了解了您的问题,以下是我的回答:
(1) 下面是一个简单的DrawLineComponent类的实现,它可以根据给定的点绘制折线:
```java
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import javax.swing.JComponent;
public class DrawLineComponent extends JComponent {
private Point2D[] points;
public DrawLineComponent(Point2D[] points) {
this.points = points;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < points.length - 1; i++) {
Point2D p1 = points[i];
Point2D p2 = points[i + 1];
g2.drawLine((int) p1.getX(), (int) p1.getY(), (int) p2.getX(), (int) p2.getY());
}
}
}
```
(2) 接下来,我们可以使用上述类来绘制正弦曲线、余弦曲线或者自己编写的表达式的曲线。下面是一个示例代码:
```java
import java.awt.geom.Point2D;
import javax.swing.JFrame;
public class DrawLineDemo {
public static void main(String[] args) {
Point2D[] points = new Point2D[100];
for (int i = 0; i < points.length; i++) {
double x = i * 10;
double y = 100 + 50 * Math.sin(Math.toRadians(x));
points[i] = new Point2D.Double(x, y);
}
DrawLineComponent comp = new DrawLineComponent(points);
JFrame frame = new JFrame();
frame.add(comp);
frame.setSize(1000, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
```
上述代码将会绘制一个正弦曲线,您可以根据需要修改代码中的点集,以绘制余弦曲线或者自己编写的表达式的曲线。
阅读全文