Viruz Blog
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Dibujar Figuras con evento KeyEvent

Ir abajo

Dibujar Figuras con evento KeyEvent Empty Dibujar Figuras con evento KeyEvent

Mensaje  Admin (Viruz) Lun Oct 01, 2012 11:53 pm

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]
¿Como funciona el Programa?

  1. Corre el programa ya sea en NetBeans o con el .jar.
  2. Al iniciar el programa aparecerá nuestra ventana con su respectivo panel de dibujo.
  3. 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
  4. 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
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 study
Enlace: Dibujar con KeyEvent
Admin (Viruz)
Admin (Viruz)
Admin

Mensajes : 148
Fecha de inscripción : 23/09/2012
Edad : 35
Localización : Desktop

https://viruz.foroactivo.mx

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.