Dibujar Figuras con evento KeyEvent
Viruz Blog :: Programación en General :: Java :: Básicos
Página 1 de 1.
Dibujar Figuras con evento KeyEvent
De regalo les traigo este programa en Java donde hacemos uso de los eventos del teclado. Un programa muy sencillo pero divertido y eficaz espero les guste y seguiremos modificando el blog para la comodidad de ustedes.
Imagen
[Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver este vínculo]
¿Como funciona el Programa?
- Corre el programa ya sea en NetBeans o con el .jar.
- Al iniciar el programa aparecerá nuestra ventana con su respectivo panel de dibujo.
- En la parte posterior de la ventana una etiqueta indicando las letras de nuestro teclado que se oprimirán para realizar el dibujo.
Círculo = C
Óvalo = O
Rectángulo = R
Linea = L - Después de escoger nuestra figura la etiqueta de la parte inferior cambiará dependiendo el dibujo y mediante el ratón se arrastra en el panel la figura seleccionada para dibujar.
Código
Clase Main
Clase Main
01 /**
02 *
03 * @author Jesus Ivan
04 */
05 import javax.swing.JFrame;
06
07 public class Main {
08 public static void main(String[] args) {
09 Ventana miVentana = new Ventana();
10 miVentana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
11 }
12 }
Clase MiPanel
01 import java.awt.Color;
02 import java.awt.Graphics;
03 import javax.swing.JPanel;
04
05 public class MiPanel extends JPanel {
06 private int x1;
07 private int y1;
08 private int ancho;
09 private int largo;
10 private int figuraDibujar;
11 private Dibujable figura;
12 //private final son valores constantes.
13 private final int CIRCULO = 1;
14 private final int OVALO = 2;
15 private final int RECTANGULO = 3;
16 private final int LINEA = 4;
17
18 public MiPanel(){
19 x1 = 0;
20 y1 = 0;
21 ancho = 1;
22 largo = 1;
23 figuraDibujar = 1;
24 }
25
26 @Override
27 public void paintComponent(Graphics g){
28 //Esta sentencia te Permite Volver a pintar y utilizar Repaint()
29 super.paintComponent(g);
30
31 g.setColor(Color.BLUE);
32
33 switch(getFiguraDibujar()){
34 case CIRCULO: figura = new Circulo(getX1(),getY1(),getLargo());
35 break;
36 case OVALO: figura = new Ovalo(getX1(), getY1(),getLargo(),getAncho());
37 break;
38 case RECTANGULO: figura = new Rectangulo(getX1(), getY1(),getLargo(),getAncho());
39 break;
40 case LINEA: figura = new Linea(getX1(), getY1(),getLargo(),getAncho());
41 break;
42 }
43
44 figura.dibujar(g);
45 }
46 public void dibujar(){
47 repaint();
48 }
49
50 //*MÉTODOS set asginan Valores Y get Regresan Valores
51 //Sirven para asignar nuevos valores cuando se dibujan varias veces.
52 public int getX1() {
53 return x1;
54 }
55
56 public void setX1(int x1) {
57 this.x1 = x1;
58 }
59
60 public int getY1() {
61 return y1;
62 }
63
64 public void setY1(int y1) {
65 this.y1 = y1;
66 }
67
68 public int getAncho() {
69 return ancho;
70 }
71
72 public void setAncho(int ancho) {
73 this.ancho = ancho;
74 }
75
76 public int getLargo() {
77 return largo;
78 }
79
80 public void setLargo(int largo) {
81 this.largo = largo;
82 }
83
84 public int getFiguraDibujar() {
85 return figuraDibujar;
86 }
87
88 public void setFiguraDibujar(int figuraDibujar) {
89 this.figuraDibujar = figuraDibujar;
90 }
91
92 }
Clase Ventana
01 /**
02 *
03 * @author Jesus Ivan
04 */
05 import java.awt.BorderLayout;
06 import java.awt.Color;
07 import java.awt.Container;
08 import java.awt.event.*;
09 import javax.swing.JFrame;
10 import javax.swing.JLabel;
11
12 public class Ventana extends JFrame{
13 private Container contenedor;
14 private MiPanel miPanel;
15 private JLabel informacion;
16 private JLabel nombreFigura;
17 private String teclaOprimida;
18
19 public Ventana(){
20 super("Viruz Blog: Dibujar con KeyEvent");
21 contenedor = getContentPane();
22 setSize(500, 500);
23 setBackground(Color.YELLOW);
24
25 addComponentes();
26 addEventos();
27 setLocationRelativeTo(null);
28 setVisible(true);
29 }
30
31 public void addComponentes(){
32 String info = new String("Círculo (c) - Óvalo (o) - " +
33 "Rectángulo (r) - Línea (l)");
34
35 informacion = new JLabel(info);
36 nombreFigura = new JLabel("Figura predeterminada: Círculo");
37 miPanel = new MiPanel();
38 miPanel.setBackground(Color.WHITE);
39
40 contenedor.add(miPanel, BorderLayout.CENTER);
41 contenedor.add(informacion, BorderLayout.NORTH);
42 contenedor.add(nombreFigura, BorderLayout.SOUTH);
43 }
44 public void addEventos(){
45 addKeyListener(new KeyAdapter(){
46 //keyPressed maneja el evento cuando se oprime el botón del teclado
47 @Override
48 public void keyPressed(KeyEvent e){
49 //getKetText Regresa un String y getKeyCode Devuelve el entero
50 //clave de código.
51 teclaOprimida = e.getKeyText(e.getKeyCode());
52
53 if(teclaOprimida.equals("O")){
54 miPanel.setFiguraDibujar(2);
55 nombreFigura.setText("Óvalo");
56
57 }else if(teclaOprimida.equals("R")){
58 miPanel.setFiguraDibujar(3);
59 nombreFigura.setText("Rectángulo");
60
61 }else if(teclaOprimida.equals("L")){
62 miPanel.setFiguraDibujar(4);
63 nombreFigura.setText("Línea");
64
65 }else{
66 miPanel.setFiguraDibujar(1);
67 nombreFigura.setText("Círculo");
68 }
69 }
70 });
71 //Evento de Raton
72 addMouseListener(new MouseAdapter(){
73 //mousePressed maneja el evento cuando se oprime el botón del ratón.
74 @Override
75 public void mousePressed(MouseEvent e){
76 //Indica la posicion del Puntero a empezar a dibujar.
77 miPanel.setX1(e.getX() - 8);
78 miPanel.setY1(e.getY() - 45);
79
80 if(teclaOprimida.equals("L")){
81 miPanel.setLargo(miPanel.getX1());
82 miPanel.setAncho(miPanel.getY1());
83 }else{
84 miPanel.setLargo(e.getX() - miPanel.getX1() - 8);
85 miPanel.setAncho(e.getY() - miPanel.getY1() - 45);
86 }
87 miPanel.dibujar();
88 }
89 });
90 //mouseDragged maneja el evento cuando el usuario arrastra el ratón con el
91 //botón oprimido.
92 addMouseMotionListener(new MouseMotionAdapter(){
93 @Override
94 public void mouseDragged(MouseEvent e){
95
96 if(teclaOprimida.equals("L")){
97 miPanel.setLargo(e.getX() - 8);
98 miPanel.setAncho(e.getY() - 45);
99 }else{
100 miPanel.setLargo(e.getX() - miPanel.getX1() - 8);
101 miPanel.setAncho(e.getY() - miPanel.getY1() - 45);
102 }
103
104 miPanel.dibujar();
105 }
106 });
107 }
108 }
Clase Figura
01 /**
02 *
03 * @author Jesus Ivan
04 */
05 public abstract class Figura implements Dibujable{
06 private int x1;
07 private int y1;
08 private int largo;
09 private int ancho;
10
11 public Figura(int x1, int y1, int largo, int ancho){
12 cambiarPosicion(x1, y1);
13 cambiarTamaño(largo, ancho);
14 }
15
16 public void cambiarPosicion(int x1, int y1){
17 this.setX1(x1);
18 this.setY1(y1);
19 }
20
21 public void cambiarTamaño(int largo, int ancho){
22 this.setLargo(largo);
23 this.setAncho(ancho);
24 }
25
26
27 //**MÉTODOS set Y get
28 public int getAncho() {
29 return ancho;
30 }
31
32 public void setAncho(int ancho) {
33 this.ancho = ancho;
34 }
35
36 public int getX1() {
37 return x1;
38 }
39
40 public void setX1(int x1) {
41 this.x1 = x1;
42 }
43
44 public int getY1() {
45 return y1;
46 }
47
48 public void setY1(int y1) {
49 this.y1 = y1;
50 }
51
52 public int getLargo() {
53 return largo;
54 }
55
56 public void setLargo(int largo) {
57 this.largo = largo;
58 }
59 }
Clase Dibujable
01 /**
02 *
03 * @author Jesus Ivan
04 */
05 import java.awt.Graphics;
06
07 public interface Dibujable {
08 public abstract void dibujar(Graphics g);
09 }
Nota: Faltan las clases Circulo, Linea, Ovalo y Rectángulo las cuales agrego en el proyecto completo para que la descarga o en el Repositorio.
Vídeo
Descarga el Código
Dibujar con evento KeyEvent
Autor: Viruz Descarga el Código
Dibujar con evento KeyEvent
Enlace: Dibujar con KeyEvent
Viruz Blog :: Programación en General :: Java :: Básicos
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|