The update method must simply call Swing’s repaint method: when the model changes (because a new point has been added, for example), the model will notify all its listeners, which will call the update method of MyFrame, which will ask Swing to repaint everything; Swing will then automatically call the paintComponent method of the MyPanel (see below) which will then redraw everything (including the new point).写一个java文件
时间: 2023-12-03 17:45:09 浏览: 131
利用java的Swing写的一个小工具,复制某类型文件
5星 · 资源好评率100%
以下是一个简单的 Java 文件,其中包含了 MyFrame 和 MyPanel 类。它们实现了一个简单的 GUI 界面,可以添加并显示点。
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MyFrame extends JFrame {
private MyPanel panel;
public MyFrame() {
setTitle("My Frame");
setSize(400, 400);
panel = new MyPanel();
add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void addPoint(Point point) {
panel.addPoint(point);
}
}
class MyPanel extends JPanel {
private List<Point> points;
public MyPanel() {
setBackground(Color.WHITE);
points = new ArrayList<>();
}
public void addPoint(Point point) {
points.add(point);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (Point point : points) {
g.drawOval(point.x, point.y, 5, 5);
}
}
}
```
在这个例子中,MyFrame 类继承了 JFrame 类,并创建了一个包含 MyPanel 的窗口。MyPanel 类继承了 JPanel 类,并实现了添加点和绘制点的方法。当添加一个新点时,MyPanel 会调用 repaint 方法来请求 Swing 重新绘制组件。Swing 会自动调用 MyPanel 的 paintComponent 方法来绘制所有的点。
你可以使用以下代码来测试这个例子:
```java
public class Main {
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.addPoint(new Point(100, 100));
frame.addPoint(new Point(200, 200));
frame.addPoint(new Point(300, 300));
}
}
```
这个例子将创建一个新的 MyFrame 窗口,并在窗口中添加三个点。当每个点被添加时,Swing 会自动重新绘制 MyPanel,从而在窗口中显示新的点。
阅读全文