Skip to content

Commit 3c77b3f

Browse files
committed
Chapter 02 section 06 added.
1 parent fe73ef5 commit 3c77b3f

File tree

27 files changed

+120
-58
lines changed

27 files changed

+120
-58
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import java.awt.Graphics2D;
2+
import java.awt.Graphics;
3+
import java.awt.Dimension;
4+
import java.awt.Color;
5+
import java.awt.geom.Ellipse2D;
6+
import java.awt.RenderingHints;
7+
import java.awt.BasicStroke;
8+
9+
import javax.swing.JFrame;
10+
import javax.swing.JPanel;
11+
12+
public class AlgoFrame extends JFrame{
13+
14+
private int canvasWidth;
15+
private int canvasHeight;
16+
17+
public AlgoFrame(String title, int canvasWidth, int canvasHeight){
18+
19+
super(title);
20+
21+
this.canvasWidth = canvasWidth;
22+
this.canvasHeight = canvasHeight;
23+
24+
AlgoCanvas canvas = new AlgoCanvas();
25+
setContentPane(canvas);
26+
pack();
27+
28+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
29+
setResizable(false);
30+
31+
setVisible(true);
32+
}
33+
34+
public AlgoFrame(String title){
35+
36+
this(title, 1024, 768);
37+
}
38+
39+
public int getCanvasWidth(){return canvasWidth;}
40+
public int getCanvasHeight(){return canvasHeight;}
41+
42+
private class AlgoCanvas extends JPanel{
43+
44+
@Override
45+
public void paintComponent(Graphics g) {
46+
super.paintComponent(g);
47+
48+
Graphics2D g2d = (Graphics2D)g;
49+
50+
// 具体绘制
51+
AlgoVisHelper.setColor(g2d, Color.BLUE);
52+
AlgoVisHelper.fillCircle(g2d, canvasWidth/2,canvasHeight/2,200);
53+
54+
AlgoVisHelper.setStrokeWidth(g2d,5);
55+
AlgoVisHelper.setColor(g2d, Color.RED);
56+
AlgoVisHelper.strokeCircle(g2d, canvasWidth/2,canvasHeight/2,200);
57+
}
58+
59+
@Override
60+
public Dimension getPreferredSize(){
61+
return new Dimension(canvasWidth, canvasHeight);
62+
}
63+
64+
}
65+
}
66+
67+

02-Java-Swing-Basics/05-Advanced-Rendering/src/AlgoVisHelper.java renamed to 02-Java-Swing-Basics/05-Drawing-Refactor/src/AlgoVisHelper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ public class AlgoVisHelper {
77

88
private AlgoVisHelper(){}
99

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

1212
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
1313
g.draw(circle);
1414
}
1515

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

1818
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
1919
g.fill(circle);
2020
}
2121

22-
static public void setColor(Graphics2D g, Color color){
22+
public static void setColor(Graphics2D g, Color color){
2323
g.setColor(color);
2424
}
2525

26-
static public void setStrokeWidth(Graphics2D g, int w){
27-
int strokeWidth = 10;
26+
public static void setStrokeWidth(Graphics2D g, int w){
27+
int strokeWidth = w;
2828
g.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
2929
}
3030
}

02-Java-Swing-Basics/05-Advanced-Rendering/src/Main.java renamed to 02-Java-Swing-Basics/05-Drawing-Refactor/src/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class Main {
66
public static void main(String[] args) {
77

88
EventQueue.invokeLater(() -> {
9-
AlgoFrame frame = new AlgoFrame("Welcome",800,800);
9+
AlgoFrame frame = new AlgoFrame("Welcome",500,500);
1010
});
1111
}
1212
}

02-Java-Swing-Basics/05-Advanced-Rendering/src/AlgoFrame.java renamed to 02-Java-Swing-Basics/06-Advanced-Rendering/src/AlgoFrame.java

Lines changed: 5 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -39,52 +39,6 @@ public AlgoFrame(String title){
3939
public int getCanvasWidth(){return canvasWidth;}
4040
public int getCanvasHeight(){return canvasHeight;}
4141

42-
43-
// private class AlgoCanvas extends JPanel{
44-
//
45-
// public AlgoCanvas(){
46-
// // 双缓存
47-
// super(true);
48-
// }
49-
//
50-
// @Override
51-
// public void paint(Graphics g) {
52-
// super.paint(g);
53-
//
54-
// Graphics2D g2d = (Graphics2D)g;
55-
//
56-
// // 抗锯齿
57-
// RenderingHints hints = new RenderingHints(
58-
// RenderingHints.KEY_ANTIALIASING,
59-
// RenderingHints.VALUE_ANTIALIAS_ON);
60-
// hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
61-
// g2d.addRenderingHints(hints);
62-
//
63-
// // 具体绘制
64-
// int strokeWidth = 10;
65-
// g2d.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
66-
//
67-
// g2d.setPaint(Color.RED);
68-
// strokeCircle(g2d, canvasWidth/2,canvasHeight/2,300);
69-
//
70-
// g2d.setPaint(Color.BLUE);
71-
// fillCircle(g2d, canvasWidth/2,canvasHeight/2,300);
72-
// }
73-
//
74-
// /// 绘制辅助函数
75-
// private void strokeCircle(Graphics2D g, int x, int y, int r){
76-
//
77-
// Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
78-
// g.draw(circle);
79-
// }
80-
//
81-
// private void fillCircle(Graphics2D g, int x, int y, int r){
82-
//
83-
// Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
84-
// g.fill(circle);
85-
// }
86-
// }
87-
8842
private class AlgoCanvas extends JPanel{
8943

9044
public AlgoCanvas(){
@@ -102,16 +56,15 @@ public void paintComponent(Graphics g) {
10256
RenderingHints hints = new RenderingHints(
10357
RenderingHints.KEY_ANTIALIASING,
10458
RenderingHints.VALUE_ANTIALIAS_ON);
105-
hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
10659
g2d.addRenderingHints(hints);
10760

10861
// 具体绘制
109-
AlgoVisHelper.setStrokeWidth(g2d,10);
110-
AlgoVisHelper.setColor(g2d, Color.RED);
111-
AlgoVisHelper.strokeCircle(g2d, canvasWidth/2,canvasHeight/2,300);
112-
11362
AlgoVisHelper.setColor(g2d, Color.BLUE);
114-
AlgoVisHelper.fillCircle(g2d, canvasWidth/2,canvasHeight/2,300);
63+
AlgoVisHelper.fillCircle(g2d, canvasWidth/2,canvasHeight/2,200);
64+
65+
AlgoVisHelper.setStrokeWidth(g2d,5);
66+
AlgoVisHelper.setColor(g2d, Color.RED);
67+
AlgoVisHelper.strokeCircle(g2d, canvasWidth/2,canvasHeight/2,200);
11568
}
11669

11770
@Override
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import java.awt.BasicStroke;
2+
import java.awt.Color;
3+
import java.awt.Graphics2D;
4+
import java.awt.geom.Ellipse2D;
5+
6+
public class AlgoVisHelper {
7+
8+
private AlgoVisHelper(){}
9+
10+
public static void strokeCircle(Graphics2D g, int x, int y, int r){
11+
12+
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
13+
g.draw(circle);
14+
}
15+
16+
public static void fillCircle(Graphics2D g, int x, int y, int r){
17+
18+
Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);
19+
g.fill(circle);
20+
}
21+
22+
public static void setColor(Graphics2D g, Color color){
23+
g.setColor(color);
24+
}
25+
26+
public static void setStrokeWidth(Graphics2D g, int w){
27+
int strokeWidth = w;
28+
g.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
29+
}
30+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import java.awt.*;
2+
import javax.swing.*;
3+
4+
public class Main {
5+
6+
public static void main(String[] args) {
7+
8+
EventQueue.invokeLater(() -> {
9+
AlgoFrame frame = new AlgoFrame("Welcome",500,500);
10+
});
11+
}
12+
}

02-Java-Swing-Basics/Chapter-02.key

287 KB
Binary file not shown.

0 commit comments

Comments
 (0)