-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRotation.java
More file actions
108 lines (97 loc) · 3.42 KB
/
Copy pathRotation.java
File metadata and controls
108 lines (97 loc) · 3.42 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package java2d;
import java.awt.Color;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
public class Rotation extends Transformation {
private JTextField jtfAngle;
private javax.swing.JSlider jslAngle;
private double conversionUnit;
private double angle = 0;
public Rotation(java.awt.Shape shp) {
//Asignar figura inicial
shpFigura = shp;
//Area de opciones
JPanel jpnOpciones = new JPanel(new BorderLayout());
JPanel jpnAngulo = new JPanel();
JPanel jpnCambio = new JPanel(new BorderLayout());
jpnAngulo.add(new javax.swing.JLabel("Angulo = "));
jtfAngle = new JTextField("0");
jtfAngle.setColumns(10);
jtfAngle.addActionListener((java.awt.event.ActionEvent e) -> {
if (jtfAngle.getText().isEmpty()) {
JOptionPane.showMessageDialog(Rotation.this, "Especifique el angulo de rotación",
"Mensaje", JOptionPane.INFORMATION_MESSAGE);
} else {
try {
int ang = Integer.parseInt(jtfAngle.getText());
if (ang < 0) {
ang *= (-1);
ang %= 360;
ang = 360 - ang;
} else if (ang > 0) {
ang %= 360;
if (ang == 0) {
ang = 360;
}
}
jslAngle.setValue(ang);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(Rotation.this, "Ingrese solo numeros enteros",
"Mensaje", JOptionPane.INFORMATION_MESSAGE);
}
}
});
jpnAngulo.add(jtfAngle);
jpnAngulo.add(new javax.swing.JLabel("Grados"));
jslAngle = new javax.swing.JSlider(javax.swing.SwingConstants.HORIZONTAL, 0, 360, 0);
jslAngle.setMajorTickSpacing(10);
jslAngle.setPaintTicks(true);
jslAngle.addChangeListener((javax.swing.event.ChangeEvent e) -> {
int ang = jslAngle.getValue();
jtfAngle.setText(String.valueOf(ang));
angle = conversionUnit * ang;
jpnAreaDibujo.repaint();
});
jpnCambio.add(jslAngle);
jpnOpciones.add(jpnAngulo, BorderLayout.WEST);
jpnOpciones.add(jpnCambio, BorderLayout.CENTER);
//>Unidad de conversion de grados a radianes
conversionUnit = (2 * Math.PI * (-1)) / 360;
//>Configurar Trasladar
add(jpnOpciones, BorderLayout.NORTH);
}
@Override
public void cambiarFigura(java.awt.Shape shp) {
shpFigura = shp;
reiniciar();
jpnAreaDibujo.repaint();
}
@Override
public void dibujarFigura(java.awt.Graphics2D g2d) {
g2d.rotate(angle);
switch (apariencia) {
case 0:
sinRelleno(g2d);
break;
case 1:
relleno(g2d);
break;
case 2:
degradado(g2d);
break;
case 3:
rellenoCnFig(g2d);
break;
}
}
public void sinRelleno(java.awt.Graphics2D g2d) {
g2d.setPaint(Color.BLUE);
g2d.draw(shpFigura);
}
@Override
public void reiniciar() {
jslAngle.setValue(0);
}
}