-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPatternView.java
executable file
·67 lines (55 loc) · 2.03 KB
/
PatternView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class PatternView extends JPanel {
int frame_height;
int frame_width;
int circles = 3;
PatternView(int frame_width, int frame_height) {
this.frame_height = frame_height;
this.frame_width = frame_width;
// Frame
JFrame frame = new JFrame();
frame.setSize(frame_width, frame_height);
frame.setDefaultCloseOperation(3);
frame.add(this);
this.setBackground(new Color(229, 222, 206, 255));
// Slider
JSlider slider = new JSlider(JSlider.VERTICAL, 0, 12, 3);
slider.setBackground(null);
slider.setPaintLabels(false);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
circles = Integer.valueOf(((JSlider) (e.getSource())).getValue());
repaint();
}
});
slider.setMajorTickSpacing(1);
slider.setPaintTicks(true);
// Layout
this.setLayout(new BorderLayout());
this.add(slider, BorderLayout.EAST);
frame.setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
// Pen properties
Graphics2D g2 = (Graphics2D) g;
g2.translate(this.getWidth() / 2, this.getHeight() / 2);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke stroke = new BasicStroke(10);
g2.setStroke(stroke);
// Center circle parametres
int center_diameter = 20;
int center_x = -center_diameter / 2;
int center_y = center_x;
//Drawing
for (int i = 0; i < circles; i++) {
Pattern.drawPattern(center_x, center_y, center_diameter, i, g2);
}
}
}