Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: phoenix_88 en 26 Febrero 2013, 15:45 pm



Título: Ayuda con programa de graficos en java
Publicado por: phoenix_88 en 26 Febrero 2013, 15:45 pm
Hola a todos, quisiera saber si alguno de uds me podria colaborar para elaborar un applet en el cual hayan 2 botones de tal manera que al presionar uno de los botones genere figuras al azar empezando más debajo de la coordenada 60, 80 y con el otro limpie la pantalla.

Les agradezco si me pudieran colaborar con esto ya que he estado buscando sobre el tema pero no he logrado comprender.


Título: Re: Ayuda con programa de graficos en java
Publicado por: 1mpuls0 en 26 Febrero 2013, 17:37 pm
._. no sé donde búscaste o a qué te refieres con que no encontraste.

http://xolaltenco.wordpress.com/2007/10/14/dibuja-figuras-en-java/
http://casidiablo.net/codigo-java-graficos-2d/

y tienes un mal concepto de "Colaborar"
http://es.wikipedia.org/wiki/Colaboraci%C3%B3n

Con esa actitud nadie aqui te ayudará.

Saludos.


Título: Re: Ayuda con programa de graficos en java
Publicado por: phoenix_88 en 26 Febrero 2013, 19:04 pm
Bueno si disculpa la verdad es la primera vez que ingreso pero tal vez la desesperación a este inconveniente me llevo a plantear mal la pregunta, en realidad lo que no se es como hacer para que al presionar el boton genere figuras aleatoriamente sin necesidad de crear mas botones.

Slds.


Título: Re: Ayuda con programa de graficos en java
Publicado por: 1mpuls0 en 26 Febrero 2013, 21:10 pm
Cóloca lo que llevas de código y te ayudo.

Saludos.


Título: Re: Ayuda con programa de graficos en java
Publicado por: phoenix_88 en 27 Febrero 2013, 15:03 pm
Hola, mira lo que llevo no se que tengo mal pero al ejecutarlo la ventana del applet queda en blanco.

Te agradezco si me pudieras indicar cual es el problema.

Buen día.

import java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class actividad3 extends Applet implements ActionListener{

public void init() {   
setSize(460,320);
}
   Label label;
   Button b1,b2,b3,b4;
   boolean circulo = false;
   boolean cuadrado= false;
   boolean triangulo= false;
   Color color;

   actividad3(String titulo){
       setLayout(new FlowLayout());
       setBackground(Color.CYAN); // define las caracteristicas de la ventana del programa uno
       Font fuente = new Font("Verdana",Font.BOLD,30);
       label = new Label("");label.setFont(fuente);
       color = new Color(aleatorio(255),aleatorio(255),aleatorio(255));
       b1 = new Button("Circulo"); // crea los botones de la parte superior
     b2 = new Button("Cuadrado");
     b3 = new Button("Triangulo");
     b4 = new Button("Limpia");
     add(b1);add(b2);
     add(b3);add(b4);
     b1. addActionListener(this);
     b2. addActionListener(this);
     b3. addActionListener(this);
     b4. addActionListener(this);


       addWindowListener(new WindowAdapter() {public void
       windowClosing(WindowEvent e) {setVisible(false);}});
   }
public void actionPerformed(ActionEvent ae) {
     if (ae.getSource() == b1) { // muestra la figura del circulo
        circulo = true;cuadrado = false;triangulo=false;
     }
     else
          if (ae.getSource() == b2) { // muestra la figura del cuadrado
        cuadrado = true;circulo = false;triangulo=false;
          }
        else
            if (ae.getSource() == b4) { // limpia la pantalla
        circulo = false;triangulo=false;cuadrado = false;
         }
       else
          if (ae.getSource() == b3) { // muestra la figura del triangulo
        triangulo = true;cuadrado = false;circulo = false;
          }
     repaint();
  }
     public void paint(Graphics g) {
         if (circulo) { //define las coordenadas y el borde del circulo color rojo
                g.setColor(Color.red);
                        int x1 = 110;
                        int y1 = 150;
               g.drawOval(x1,y1,100,100);
              g.translate(x1, y1);
                 }
      else
       if (cuadrado) { //define las coordenadas, determina un color de fondo y a la figura le determina un color de relleno
              g.setColor( color );;
        setBackground(Color.black);
        int x1 = 110,y1 = 150;
        g.drawRect(x1,y1,100,100);
        g.fillRect( x1,y1,100,100 );
                 }
      else
           if (triangulo) { //define las coordenadas y el borde del circulo color naranja
                g.setColor(Color.ORANGE);

              int x1= 100,y1= 50,z1= 200;
              int a1= 100,y3 = 50,c1= 0;
              int d1= 200,e1= 150,f1= 1;
              g.drawLine(x1, y1, z1,150);
              g.drawLine(a1,  y3, c1,150);
                g.drawLine(d1, e1, f1,150);
           }}
      private int aleatorio( int rango ) {

        double retornoMath;
        retornoMath = Math.random();

        return( (int)( retornoMath * rango ) );
       }

        private void addWindowListener(WindowAdapter windowAdapter) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }


Título: Re: Ayuda con programa de graficos en java
Publicado por: 1mpuls0 en 27 Febrero 2013, 17:59 pm
Listo!
Perdona lo tuve que hacer con nb no tengo mucho tiempo.
Solo te toca "limpiar" el código xD

Saludos.

Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package figuras;
  6.  
  7. import java.awt.Graphics;
  8. import java.awt.Color;
  9. import java.awt.Font;
  10. /**
  11.  *
  12.  * @author Darhius929
  13.  */
  14. public class PintaFiguras extends java.applet.Applet {
  15.  
  16.    /**
  17.      * Initializes the applet PintaFiguras
  18.      */
  19.    public void init() {
  20.        try {
  21.            java.awt.EventQueue.invokeAndWait(new Runnable() {
  22.                public void run() {
  23.                    initComponents();
  24.                }
  25.            });
  26.        } catch (Exception ex) {
  27.            ex.printStackTrace();
  28.        }
  29.    }
  30.  
  31.    /**
  32.      * This method is called from within the init() method to initialize the
  33.      * form. WARNING: Do NOT modify this code. The content of this method is
  34.      * always regenerated by the Form Editor.
  35.      */
  36.    // <editor-fold defaultstate="collapsed" desc="Generated Code">
  37.    private void initComponents() {
  38.  
  39.        etiquetaFiguras = new java.awt.Label();
  40.        botonCirculo = new java.awt.Button();
  41.        botonCuadrado = new java.awt.Button();
  42.        botonTriangulo = new java.awt.Button();
  43.        botonLimpiar = new java.awt.Button();
  44.  
  45.        etiquetaFiguras.setFont(new Font("Verdana",Font.BOLD,30));
  46.        etiquetaFiguras.setText("Figuras");
  47.        add(etiquetaFiguras);
  48.  
  49.        botonCirculo.setLabel("Circulo");
  50.        botonCirculo.addActionListener(new java.awt.event.ActionListener() {
  51.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  52.                botonCirculoActionPerformed(evt);
  53.            }
  54.        });
  55.        add(botonCirculo);
  56.  
  57.        botonCuadrado.setLabel("Cuadrado");
  58.        botonCuadrado.addActionListener(new java.awt.event.ActionListener() {
  59.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  60.                botonCuadradoActionPerformed(evt);
  61.            }
  62.        });
  63.        add(botonCuadrado);
  64.  
  65.        botonTriangulo.setLabel("Triangulo");
  66.        botonTriangulo.addActionListener(new java.awt.event.ActionListener() {
  67.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  68.                botonTrianguloActionPerformed(evt);
  69.            }
  70.        });
  71.        add(botonTriangulo);
  72.  
  73.        botonLimpiar.setLabel("Limpia");
  74.        botonLimpiar.addActionListener(new java.awt.event.ActionListener() {
  75.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  76.                botonLimpiarActionPerformed(evt);
  77.            }
  78.        });
  79.        add(botonLimpiar);
  80.    }// </editor-fold>
  81.  
  82.    private void botonCirculoActionPerformed(java.awt.event.ActionEvent evt) {
  83.        // TODO add your handling code here:
  84.  
  85.        esCirculo = true;
  86.        esCuadrado = false;
  87.        esTriangulo = false;
  88.        repaint();
  89.    }
  90.  
  91.    private void botonLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
  92.        // TODO add your handling code here:
  93.        esLimpiar = true;
  94.        esCirculo = false;
  95.        esCuadrado = false;
  96.        esTriangulo = false;
  97.        repaint();
  98.    }
  99.  
  100.    private void botonTrianguloActionPerformed(java.awt.event.ActionEvent evt) {
  101.        // TODO add your handling code here:
  102.  
  103.        esCirculo = false;
  104.        esCuadrado = false;
  105.        esTriangulo = true;
  106.        repaint();
  107.    }
  108.  
  109.    private void botonCuadradoActionPerformed(java.awt.event.ActionEvent evt) {
  110.        // TODO add your handling code here:
  111.  
  112.        esCirculo = false;
  113.        esCuadrado = true;
  114.        esTriangulo = false;
  115.        repaint();
  116.    }
  117.  
  118.  
  119.    public void paint(Graphics g) {
  120.        if(esCirculo) {
  121.            g.setColor(Color.RED);
  122.            int x1 = 110;
  123.            int y1 = 150;
  124.            g.drawOval(x1,y1,100,100);
  125.            g.translate(x1, y1);
  126.        }else if(esCuadrado) {
  127.            g.setColor(obtenerColorAleatorio(255, 255, 255));
  128.            this.setBackground(Color.BLACK);
  129.            int x1 = 110, y1 = 150;
  130.            g.drawRect(x1,y1,100,100);
  131.            g.fillRect( x1,y1,100,100 );
  132.        }else if(esTriangulo) {
  133.            g.setColor(Color.ORANGE);
  134.            int x1= 100,y1= 50,z1= 200;
  135.            int a1= 100,y3 = 50,c1= 0;
  136.            int d1= 200,e1= 150,f1= 1;
  137.            g.drawLine(x1, y1, z1,150);
  138.            g.drawLine(a1,  y3, c1,150);
  139.            g.drawLine(d1, e1, f1,150);
  140.        }else {
  141.            this.setBackground(Color.CYAN);
  142.        }
  143.    }
  144.  
  145.    private Color obtenerColorAleatorio(int R, int G, int B) {
  146.        int aleatorioR = (int)(Math.random()*R);
  147.        int aleatorioG = (int)(Math.random()*G);
  148.        int aleatorioB = (int)(Math.random()*B);
  149.  
  150.        Color colorAleatorio = new Color(aleatorioR, aleatorioG, aleatorioB);
  151.  
  152.        return colorAleatorio;
  153.    }
  154.  
  155.    private boolean esCirculo = false;
  156.    private boolean esCuadrado = false;
  157.    private boolean esTriangulo = false;
  158.    private boolean esLimpiar = false;
  159.    // Variables declaration - do not modify
  160.    private java.awt.Button botonCirculo;
  161.    private java.awt.Button botonCuadrado;
  162.    private java.awt.Button botonLimpiar;
  163.    private java.awt.Button botonTriangulo;
  164.    private java.awt.Label etiquetaFiguras;
  165.    // End of variables declaration
  166. }
  167.  


Título: Re: Ayuda con programa de graficos en java
Publicado por: phoenix_88 en 27 Febrero 2013, 19:19 pm
Darhius muchisimas gracias por tu ayuda.

Aprovechando te queria preguntar si conoces algún método o si tienes algún link donde me pueda guiar para que con un solo boton me genere las figuras de forma aleatoria sin necesidad de crear mas botones.

Slds.


Título: Re: Ayuda con programa de graficos en java
Publicado por: 1mpuls0 en 27 Febrero 2013, 21:00 pm
Pues... se me ocurrió lo siguiente xD tal vez puedas darte una idea y mejorarlo.

Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package figuras;
  6.  
  7. /**
  8.  *
  9.  * @author Darhius929
  10.  */
  11. public class Aleatorio {
  12.  
  13.    public static void main(String args[]) {
  14.        new Aleatorio();
  15.    }
  16.  
  17.    public Aleatorio() {
  18.  
  19.        String arregloFiguras[] = {"circulo", "cuadrado", "triangulo"};
  20.  
  21.        int figuraAleatoria = seleccionaAleatorio(0,arregloFiguras.length-1);
  22.        System.out.println(figuraAleatoria);
  23.        String nombreFigura = arregloFiguras[figuraAleatoria];
  24.  
  25.        if(nombreFigura.equalsIgnoreCase("circulo")) {
  26.            System.out.println("Dibuja circulo");
  27.            //esCirculo = true;
  28.        }else if( nombreFigura.equalsIgnoreCase("cuadrado")) {
  29.            System.out.println("Dibuja cuadrado");
  30.            //esCuadrado = true;
  31.        }else {
  32.            System.out.println("Dibuja triangulo");
  33.            //esTriangulo = true;
  34.        }
  35.  
  36.    }
  37.  
  38.    public  int seleccionaAleatorio(int minimo, int maximo) {
  39.        return (int) Math.round(((Math.random() * (maximo - minimo)) + minimo));
  40.    }
  41.  
  42. }
  43.  

Si lo vas a hacer así te recomiendo que utilices el método seleccionaAleatorio (me costo uno y el otro xD) si solo se utiliza
Math.random() * tamanoArreglo en este caso se iba hasta el índice 3 :/ y ocurria "ArrayIndexOutOfBoundsException" y si hacia
Math.random() * tamanoArreglo - 1 cuando el índice era 0 se obtenia el índice -1 xD

Saludos.