Edisoncor’s Weblog

Programación en Java desde LOJA

Archivo de Octubre 2007

JTextField con Imagen y redondeado

Publicado por edisoncor en Octubre 9, 2007

Hola a todos denuevo me encuentro aqui, en esta oportunidad vamos desarroollar un JTextField al cual le podamos añadir una imagen, y ademas va a estar redondeado, el codigo para desarrollarlo es asi:

JtextField con Imagen
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Paint;
import java.awt.geom.RoundRectangle2D;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder; 

/**
 *
 * @author Edisoncor
 */
public class JERoundTextField extends JTextField{ 

    private int arcw=20;
    private int arch=20;
    private Image image=null;
    private Icon icon; 

    
    public JERoundTextField() {
        setOpaque(false);
        setBorder(new EmptyBorder(0,5,0,2));
        setPreferredSize(new Dimension(100,20));
    } 

    @Override
     protected void paintComponent(Graphics g) { 

        Graphics2D g2 = (Graphics2D) g;
        Paint oldPaint = g2.getPaint(); 

        RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(
                0,0,getWidth(),getHeight(),arcw,arch);
        g2.clip(r2d); 

        g2.setPaint(new GradientPaint(0.0f, 0.0f, getBackground(),
                0.0f, getHeight(), getBackground()));
        g2.fillRect(0,0,getWidth(),getHeight());
        if(getImage()!=null){
            g2.drawImage(getImage(), 5, 2, getHeight()-3, getHeight()-3, null);
            setBorder(new EmptyBorder(0,(int)(getHeight()*1.2),0,2));
        }
        g2.setPaint(new GradientPaint(0.0f, 0.0f, Color.BLACK,
                0.0f, getHeight(), Color.BLACK));
        g2.drawRoundRect(0, 0, getWidth(), getHeight(), arcw, arch); 

        g2.setPaint(oldPaint);
        super.paintComponent(g); 

    } 

    public int getArcw() {
        return arcw;
    } 

    public void setArcw(int arcw) {
        this.arcw = arcw;
    } 

    public int getArch() {
        return arch;
    } 

    public void setArch(int arch) {
        this.arch = arch;
    } 

    public Image getImage() {
        return image;
    } 

    public void setImage(Image image) {
        this.image = image;
    } 

    public Icon getIcon() {
        return icon;
    } 

    public void setIcon(Icon icon){
        this.icon=icon;
        setImage(((ImageIcon)icon).getImage());
    } 

}
aqui podemos ver una demostracion de como quedaria el JTexfield
JtextField con Imagen

Publicado en General, Swing | Etiquetado: , , , | 4 Comentarios »

JPanel con Imagen

Publicado por edisoncor en Octubre 6, 2007

Edisoncor Weblog

Hola a todos el dia de hoy vooy a crear un jpanel al cual lo podemos personalizar con una imagen, y luego sobre este panel tu puedes agregar los componentes swing que desees, para esto vamos a sobreescribir el metodo paintComponent

el codigo esta aqui

import java.awt.Graphics;  

import java.awt.Graphics2D;  

import java.awt.Image;  

import javax.swing.Icon;  

import javax.swing.ImageIcon;  

import javax.swing.JPanel;/**  

 *  

 * @author Edisoncor  

 */  

public class JEImagePanel extends JPanel{  

private Image image=null;  

    private Icon icon;  

/** Creates a new instance of JEImagePanel */  

    public JEImagePanel() {  

    }  

protected void paintComponent(Graphics g) {  

        Graphics2D g2 =(Graphics2D) g;  

        if(getImage()!=null)  

            g2.drawImage(getImage(), 0, 0, getWidth(), getHeight(), null);  

    }  

public Image getImage() {  

        return image;  

    }  

public void setImage(Image image) {  

        this.image = image;  

    }  

public Icon getIcon() {  

        return icon;  

    }  

public void setIcon(Icon icon){  

        this.icon=icon;  

        setImage(((ImageIcon)icon).getImage());  

    }  

}     esta clase tu la puedes agregar a la paleta de componentes de Netbeans e ir a la  propiedad Icon y ahi elegir la imagen que desees agregarle,  el resultado puede verse asi     Jpanle Con Imagen

Publicado en General, NetBeans, Swing | Etiquetado: , , , , , | 9 Comentarios »

Crear un JButton redondeado y personalizado

Publicado por edisoncor en Octubre 5, 2007

Hola amigos en esta oportunidad voy a crear un Boton muy perzonalizado y con algunos efectos

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
import javax.swing.ButtonModel;
import javax.swing.JButton;

/**
 *
 * @author Edisoncor
 */
public class Button extends JButton{

    private Color color1 = new Color(0x666f7f);
    private Color color2 = new Color(0x262d3d);
    private Color color3 = new Color(0x262d3d);

    
    public Button() {
        setOpaque(false);
        setContentAreaFilled(false);
        setForeground(Color.WHITE);
        setFocusPainted(false);
        setBorderPainted(false);
    }

    protected void paintComponent(Graphics g) {
        Color c1,c2,c3;
        Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);

        ButtonModel m = getModel();

         Paint oldPaint = g2.getPaint();
        if (m.isArmed()){
           c2=color1.darker();
           c1=color2.darker();
           c3=color3;
        }else{
           c1=color1.darker();
           c2=color2.darker();
           c3=color3.brighter();
        }
        if (!m.isEnabled()){
           c2=color1.brighter();
           c1=color2.brighter();
           c3=color3.darker();
        }
          RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(
                    0,0,getWidth(),getHeight()-1,20,20);
            g2.clip(r2d);
            g2.setPaint(new GradientPaint(0.0f, 0.0f, c1,
                    0.0f, getHeight(), c2));
            g2.fillRect(0,0,getWidth(),getHeight());

            g2.setStroke(new BasicStroke(4f));
            g2.setPaint(new GradientPaint(0.0f, 0.0f, c3,
                    0.0f, getHeight(), c3));
            g2.drawRoundRect(0, 0, getWidth()-2 , getHeight() -2, 18, 18);

        g2.setPaint(oldPaint);
        super.paintComponent(g);
    }

    public Color getColor1() {
        return color1;
    }

    public void setColor1(Color color1) {
        this.color1 = color1;
    }

    public Color getColor2() {
        return color2;
    }

    public void setColor2(Color color2) {
        this.color2 = color2;
    }

    public Color getColor3() {
        return color3;
    }

    public void setColor3(Color color3) {
        this.color3 = color3;
    }

}

y el resultado es
Botones

Publicado en General, Swing | Etiquetado: , , , , | 5 Comentarios »

Utilizar Jpanel degradado con la clase Gradiente

Publicado por edisoncor en Octubre 4, 2007

Ahora podemos modificar la clase JPanelgradient
y poder utilizarla con la clase gradiente
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JPanel;


/**
 *
 * @author Edisoncor
 */
public class JPanelGradient extends JPanel{

    private Gradiente gradiente;

    
    public JPanelGradient() {
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        Rectangle clip = g2.getClipBounds();
        if (gradiente!=null)
            g2.setPaint(gradiente.getGradiente());
        g2.fillRect(clip.x, clip.y, clip.width, clip.height);
    }

    public Gradiente getGradiente() {
        return gradiente;
    }

    public void setGradiente(Gradiente gradiente) {
        gradiente.setComponente(this);
        this.gradiente = gradiente;
    }

}

luego podemos realizar lo siguiente para utilizar este panel
/**
 *
 * @author  Edisoncor
 */
public class NewJFrame extends JFrame {
    private Gradiente gradiente3;
    private JEPanelGradient jEPanelGradient1;


    public NewJFrame() {
        initComponents();
    }


    private void initComponents() {
        gradiente3 = new Gradiente();
        jEPanelGradient1 = new JPanelGradient();

        gradiente3.setATipo(Gradiente.LINEAR_VERTICAL);
        gradiente3.setColor1(new java.awt.Color(204, 204, 255));
        gradiente3.setColor2(new java.awt.Color(0, 51, 51));

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jEPanelGradient1.setLayout(new java.awt.BorderLayout());

        jEPanelGradient1.setGradiente(gradiente3);
        getContentPane().add(jEPanelGradient1, java.awt.BorderLayout.CENTER);

        pack();
    }                     

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }                                       

}

y el resultado es
JFrame

Publicado en General, Swing | Etiquetado: , , | Deja un Comentario »

Clase para generar gradientes

Publicado por edisoncor en Octubre 4, 2007

A continuacion dejo una clase que permitira
crear diferentes tipos de efectos degradados
la cual puede ser utilizado en diferentes componentes swing como por ejemplo JPanel

import java.awt.Color;
import java.awt.Component;
import java.awt.GradientPaint;
import java.awt.LinearGradientPaint;
import java.awt.Paint;

/**
 *
 * @author Edisoncor
 */
public class Gradiente {

    public static final int LINEAR_HORIZONTAL= 1;
    public static final int LINEAR_HORIZONTAL_CENTRAL = 2;
    public static final int LINEAR_VERTICAL= 3;
    public static final int LINEAR_VERTICAL_CENTRAL = 4;
    public static final int LINEAR_TRANSVERSAL_IZQUIERDA = 5;
    public static final int LINEAR_TRANSVERSAL_IZQUIERDA_CENTRAL = 6;
    public static final int LINEAR_TRANSVERSAL_DERECHA = 7;
    public static final int LINEAR_TRANSVERSAL_DERECHA_CENTRAL = 8;

    private int aTipo;
    private int x1, x2, y1, y2;
    private Color color1 = new Color(0x666f7f), color2 = new Color(0x262d3d);
    private Component componente;

    public Gradiente(){

    }

    public Gradiente(int aTipo){
        setATipo(aTipo);
    }

    public Gradiente(int aTipo, Component componente){
        setATipo(aTipo);
        setComponente(componente);
    }

    public Paint getGradiente(){
        switch (getATipo()){
        case LINEAR_HORIZONTAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=0;
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_HORIZONTAL_CENTRAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=0;
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.45f,0.55f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_TRANSVERSAL_IZQUIERDA:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_TRANSVERSAL_IZQUIERDA_CENTRAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.40f,0.60f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_TRANSVERSAL_DERECHA:
            x1=componente.getWidth();
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_TRANSVERSAL_DERECHA_CENTRAL:
            x1=componente.getWidth();
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.45f,0.5f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_VERTICAL:
            x1=0;
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_VERTICAL_CENTRAL:
            x1=0;
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.40f,0.60f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        default:
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        }

    }

    public Component getComponente() {
        return componente;
    }

    public void setComponente(Component componente) {
        this.componente = componente;
        x1=0;
        y1=0;
        x2=componente.getWidth();
        y2=componente.getHeight();
    }

    public Color getColor1() {
        return color1;
    }

    public void setColor1(Color color1) {
        this.color1 = color1.darker();
    }

    public Color getColor2() {
        return color2;
    }

    public void setColor2(Color color2) {
        this.color2 = color2.darker();
    }

    public int getATipo() {
        return aTipo;
    }

    public void setATipo(int aTipo) {
        this.aTipo = aTipo;
    }

}

Publicado en General, Swing | Etiquetado: , , , , | Deja un Comentario »