Foros del Web » Programación para mayores de 30 ;) » Java »

Colocar un circulo degradado en una ventana degradada

Estas en el tema de Colocar un circulo degradado en una ventana degradada en el foro de Java en Foros del Web. Hola amigos! aqui tengo una pregunta, hize una ventana degradada [Azul & Rojo] e inicie con dos clases una para colocar el degrado & otra ...
  #1 (permalink)  
Antiguo 22/04/2012, 23:17
 
Fecha de Ingreso: marzo-2012
Ubicación: México D.F
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Colocar un circulo degradado en una ventana degradada

Hola amigos!

aqui tengo una pregunta, hize una ventana degradada [Azul & Rojo] e inicie con dos clases una para colocar el degrado & otra para hacer un degradado pero circular, a la hora de correr el programa me sale de esta manera:


Aqui es la cuestion necesito su apoyo u orientacion de como hacer para que ese circulo quede dentro del degradado rectangular.

Aqui estan los codigos que inicie:

en el MAIN
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Proyects;
import java.awt.GridLayout;
import javax.swing.JFrame;

/**
 *
 * @author Usuario
 */
public class Main extends JFrame{

    private static void alumnos(){
        //procedo a crear y preparar mi ventana

        JFrame ventana= new JFrame("Mis Degrados");
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ventana.getContentPane().setLayout(new GridLayout());
        ventana.getContentPane().add (new degradadoHorizontal());
        ventana.getContentPane().add (new Circulo());
        ventana.setVisible(true);
        ventana.setSize(400,400);
    }
        /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        javax.swing.SwingUtilities.invokeLater(new Runnable(){
         public void run(){
             alumnos();
         }
         });
    }
}
-------------------------------------------------------------------------------------------
Aqui mi primer Clase

Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Proyects;
import java.awt.Color;
import javax.swing.JPanel;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
/**
 *
 * @author Usuario
 */
class degradadoHorizontal extends JPanel {

    public degradadoHorizontal() {
    }
    public void paint(Graphics g){
        Graphics2D g2d=(Graphics2D)g;
        //Creo el degradado horizontal con las
        //coordenadas (0,0) al (anchura del componente, 0)
        GradientPaint horizontalGradient = new GradientPaint (0,0, Color.RED, getWidth(),0,Color.BLUE);
        g2d.setPaint(horizontalGradient);
        g2d.fillRect(0,0, getWidth(), getHeight());
    }

}
-------------------------------------------------------------------------------------
& aqui mi segunda clase donde coloque el circulo degradado
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Proyects;
import java.awt.geom.*;
import java.awt.Color;
import javax.swing.JPanel;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
/**
 *
 * @author DvdzhOk
 */
class Circulo extends JPanel {

    public Circulo() {
    }
    public void paint(Graphics g){
        Graphics2D g2d=(Graphics2D)g;
        //Creo el degradado horizontal con las
        //coordenadas (0,0) al (anchura del componente, 0)
        // Gradiente de color de azul a verde
        GradientPaint gradiente = new GradientPaint(75,75,Color.blue, 100,100,Color.green);
        // Se fija el gradiente
        g2d.setPaint( gradiente );
        // Circulo a rellenar
        Ellipse2D circulo = new Ellipse2D.Float(10,10,150,150);
        g2d.setPaint(gradiente);
        g2d.fill(circulo);
    }

}
Ojala puedan ayudarme! Gracias de antemano Pd. Trabajo con Netbeans
  #2 (permalink)  
Antiguo 23/04/2012, 02:18
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Colocar un circulo degradado en una ventana degradada

Tienes que meter todo el código en el código paint de uno de los dos paneles.

Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package Proyects;
  7. import java.awt.Color;
  8. import javax.swing.JPanel;
  9. import java.awt.GradientPaint;
  10. import java.awt.Graphics;
  11. import java.awt.Graphics2D;
  12. /**
  13.  *
  14.  * @author Usuario
  15.  */
  16. class degradadoHorizontal extends JPanel {
  17.  
  18.     public degradadoHorizontal() {
  19.     }
  20.  
  21.     public void paint(Graphics g){
  22.         Graphics2D g2d=(Graphics2D)g;
  23.         //Creo el degradado horizontal con las
  24.         //coordenadas (0,0) al (anchura del componente, 0)
  25.         GradientPaint horizontalGradient = new GradientPaint (0,0, Color.RED, getWidth(),0,Color.BLUE);
  26.         g2d.setPaint(horizontalGradient);
  27.         g2d.fillRect(0,0, getWidth(), getHeight());
  28.  
  29.         //Creo el degradado horizontal con las
  30.         //coordenadas (0,0) al (anchura del componente, 0)
  31.         // Gradiente de color de azul a verde
  32.         GradientPaint gradiente = new GradientPaint(75,75,Color.blue, 100,100,Color.green);
  33.         // Se fija el gradiente
  34.         g2d.setPaint( gradiente );
  35.         // Circulo a rellenar
  36.         Ellipse2D circulo = new Ellipse2D.Float(10,10,150,150);
  37.         g2d.setPaint(gradiente);
  38.         g2d.fill(circulo);
  39.     }
  40.  
  41. }

Main:

Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package Proyects;
  7. import java.awt.GridLayout;
  8. import javax.swing.JFrame;
  9.  
  10. /**
  11.  *
  12.  * @author Usuario
  13.  */
  14. public class Main extends JFrame{
  15.  
  16.     private static void alumnos(){
  17.         //procedo a crear y preparar mi ventana
  18.  
  19.         JFrame ventana= new JFrame("Mis Degrados");
  20.         ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21.         ventana.getContentPane().add (new degradadoHorizontal());
  22.         ventana.setVisible(true);
  23.         ventana.setSize(400,400);
  24.     }
  25.         /**
  26.      * @param args the command line arguments
  27.      */
  28.     public static void main(String[] args) {
  29.         // TODO code application logic here
  30.         javax.swing.SwingUtilities.invokeLater(new Runnable(){
  31.          public void run(){
  32.              alumnos();
  33.          }
  34.          });
  35.     }
  36. }
  #3 (permalink)  
Antiguo 23/04/2012, 16:59
 
Fecha de Ingreso: marzo-2012
Ubicación: México D.F
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Colocar un circulo degradado en una ventana degradada

Oh es verdad nunca se me ocurrio ponerlo en la misma clase ;) pero ahora ya usando la logica con lo que me pusiste es verdad, muchas gracias.

Pero la cuestion ahora es como hacer para que ese circulo quede centrado? no se me ocurre algo para hacerlo, ojala puedas echarme la mano
  #4 (permalink)  
Antiguo 23/04/2012, 17:46
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Colocar un circulo degradado en una ventana degradada

Tendrás que hacer unas pequeñas operaciones para calcular el punto de inicio de la elipse.

Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package gradiente;
  6.  
  7. import java.awt.Color;
  8. import javax.swing.JPanel;
  9. import java.awt.GradientPaint;
  10. import java.awt.Graphics;
  11. import java.awt.Graphics2D;
  12. import java.awt.geom.Ellipse2D;
  13. /**
  14.  *
  15.  * @author Usuario
  16.  */
  17. public class degradadoHorizontal extends JPanel {
  18.  
  19.     public degradadoHorizontal() {
  20.     }
  21.  
  22.     public void paint(Graphics g){
  23.         Graphics2D g2d=(Graphics2D)g;
  24.  
  25.         float totalHeight = getHeight();
  26.         float totalWidth = getWidth();      
  27.  
  28.         //Creo el degradado horizontal con las
  29.         //coordenadas (0,0) al (anchura del componente, 0)
  30.         GradientPaint horizontalGradient = new GradientPaint(0,0, Color.RED, totalWidth ,0,Color.BLUE);
  31.         g2d.setPaint(horizontalGradient);
  32.         g2d.fillRect(0,0, (int)totalWidth, (int)totalHeight);
  33.  
  34.  
  35.         float width = 150, height = 150;
  36.  
  37.         //Creo el degradado horizontal con las
  38.         //coordenadas (0,0) al (anchura del componente, 0)
  39.         // Gradiente de color de azul a verde
  40.        
  41.  
  42.         float coordenadaX, coordenadaY;
  43.  
  44.    
  45.         coordenadaX =  (totalWidth /2) - (width /2);
  46.         coordenadaY =  (totalHeight / 2) - (height /2);
  47.  
  48.         GradientPaint gradiente = new GradientPaint(coordenadaX,coordenadaY,Color.blue, coordenadaX+width,coordenadaY+height,Color.green);
  49.         // Se fija el gradiente
  50.         g2d.setPaint( gradiente );
  51.        
  52.         // Circulo a rellenar
  53.         Ellipse2D circulo = new Ellipse2D.Float(coordenadaX,coordenadaY,width,height);
  54.         g2d.setPaint(gradiente);
  55.         g2d.fill(circulo);
  56.     }
  57.  
  58. }
  #5 (permalink)  
Antiguo 23/04/2012, 22:35
 
Fecha de Ingreso: marzo-2012
Ubicación: México D.F
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Colocar un circulo degradado en una ventana degradada

No me funciono ese codigo pero aun asi gracias man, lo pude centrar moviento los valores de cuando declare la Ellipse ;) ya que los primeros valores son de x, y & los otros dos valores son las dimensiones del la elipse.

aun asi gracias!
  #6 (permalink)  
Antiguo 24/04/2012, 01:40
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Colocar un circulo degradado en una ventana degradada

Yo lo he probado y funciona perfectamente, te dibuja la elipse centrada, incluso al redimensionar te la pone bien.

Lo que dices de los valores, es así como lo he puesto.

Habrás hecho algún cambio porque a mí tal cual me lo hace.

Saludos.

Etiquetas: circulo, clase, degradado, programa, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:21.