Skip to content

Commit 636b0eb

Browse files
committed
Chapter 02 section 09 updated.
1 parent f8c1595 commit 636b0eb

File tree

5 files changed

+33
-41
lines changed

5 files changed

+33
-41
lines changed

02-Java-Swing-Basics/08-MVC-in-Algorithm-Visualization/src/AlgoVisualizer.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import java.awt.*;
2-
import java.util.Random;
32

43
public class AlgoVisualizer {
54

@@ -42,12 +41,4 @@ private void run(){
4241
}
4342
}
4443

45-
public static void main(String[] args) {
46-
47-
int sceneWidth = 800;
48-
int sceneHeight = 800;
49-
int N = 10;
50-
51-
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N);
52-
}
5344
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
public class Main {
2+
3+
public static void main(String[] args) {
4+
5+
int sceneWidth = 800;
6+
int sceneHeight = 800;
7+
int N = 10;
8+
9+
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N);
10+
}
11+
}

02-Java-Swing-Basics/09-Keyboard-Event/src/AlgoFrame.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public class AlgoFrame extends JFrame{
1010

1111
private int canvasWidth;
1212
private int canvasHeight;
13-
private JPanel canvas;
1413

1514
public AlgoFrame(String title, int canvasWidth, int canvasHeight){
1615

@@ -39,7 +38,7 @@ public AlgoFrame(String title){
3938

4039
// data
4140
private Circle[] circles;
42-
public void setCircles(Circle[] circles){
41+
public void render(Circle[] circles){
4342
this.circles = circles;
4443
repaint();
4544
}

02-Java-Swing-Basics/09-Keyboard-Event/src/AlgoVisHelper.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
import java.awt.*;
22
import java.awt.geom.Ellipse2D;
3-
43
import java.lang.InterruptedException;
54

65
public class AlgoVisHelper {
76

87
private AlgoVisHelper(){}
98

10-
static public void strokeCircle(Graphics2D g, int x, int y, int r){
9+
public static void strokeCircle(Graphics2D g, int x, int y, int r){
1110

1211
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
1312
g.draw(circle);
1413
}
1514

16-
static public void fillCircle(Graphics2D g, int x, int y, int r){
15+
public static void fillCircle(Graphics2D g, int x, int y, int r){
1716

1817
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
1918
g.fill(circle);
2019
}
2120

22-
static public void setColor(Graphics2D g, Color color){
21+
public static void setColor(Graphics2D g, Color color){
2322
g.setColor(color);
2423
}
2524

26-
static public void setStrokeWidth(Graphics2D g, int w){
25+
public static void setStrokeWidth(Graphics2D g, int w){
2726
int strokeWidth = w;
2827
g.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
2928
}
Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,40 @@
11
import java.awt.*;
22
import java.awt.event.*;
3-
import java.util.Random;
43

54
public class AlgoVisualizer{
65

7-
private int N;
86
private Circle[] circles;
9-
private static int R = 50;
107
private AlgoFrame frame;
118
private boolean isAnimated = true;
129

13-
public AlgoVisualizer(int N, AlgoFrame frame){
14-
this.N = N;
15-
this.frame = frame;
10+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
1611

12+
// 初始化数据
1713
circles = new Circle[N];
18-
14+
int R = 50;
1915
for(int i = 0 ; i < N ; i ++ ) {
20-
int x = (int)(Math.random()*(frame.getCanvasWidth()-2*R)) + R;
21-
int y = (int)(Math.random()*(frame.getCanvasHeight()-2*R)) + R;
16+
int x = (int)(Math.random()*(sceneWidth-2*R)) + R;
17+
int y = (int)(Math.random()*(sceneHeight-2*R)) + R;
2218
int vx = (int)(Math.random()*11) - 5;
2319
int vy = (int)(Math.random()*11) - 5;
2420
circles[i] = new Circle(x, y, R, vx, vy);
2521
}
22+
23+
// 初始化视图
24+
EventQueue.invokeLater(() -> {
25+
frame = new AlgoFrame("Welcome", sceneWidth, sceneHeight);
26+
frame.addKeyListener(new AlgoKeyListener());
27+
new Thread(() -> {
28+
run();
29+
}).start();
30+
});
2631
}
2732

2833
public void run(){
2934

3035
while(true){
3136
// 绘制数据
32-
frame.setCircles(circles);
37+
frame.render(circles);
3338
AlgoVisHelper.pause(20);
3439

3540
// 更新数据
@@ -39,15 +44,10 @@ public void run(){
3944
}
4045
}
4146

42-
public void addAlgoKeyListener(){
43-
frame.addKeyListener(new AlgoKeyListener());
44-
}
45-
4647
private class AlgoKeyListener extends KeyAdapter{
4748

4849
@Override
4950
public void keyReleased(KeyEvent event){
50-
//System.out.println("Key released:" + event);
5151
if(event.getKeyChar() == ' ')
5252
isAnimated = !isAnimated;
5353
}
@@ -57,16 +57,8 @@ public static void main(String[] args) {
5757

5858
int sceneWidth = 800;
5959
int sceneHeight = 800;
60+
int N = 10;
6061

61-
EventQueue.invokeLater(() -> {
62-
AlgoFrame frame = new AlgoFrame("Welcome", sceneWidth,sceneHeight);
63-
64-
int N = 10;
65-
AlgoVisualizer vis = new AlgoVisualizer(N, frame);
66-
vis.addAlgoKeyListener();
67-
new Thread(() -> {
68-
vis.run();
69-
}).start();
70-
});
62+
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, N);
7163
}
7264
}

0 commit comments

Comments
 (0)