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

Sobreescribir el método paintComponent de JToggleButton

Estas en el tema de Sobreescribir el método paintComponent de JToggleButton en el foro de Java en Foros del Web. Buenas a todos! Tengo un JToggleButton que muestra un icono y un texto, pero no el area del botón en sí (setContentAreaFilled(false)). Lo que quiero ...
  #1 (permalink)  
Antiguo 27/03/2012, 02:16
Avatar de huspy  
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 10 meses
Puntos: 2
Sobreescribir el método paintComponent de JToggleButton

Buenas a todos!

Tengo un JToggleButton que muestra un icono y un texto, pero no el area del botón en sí (setContentAreaFilled(false)).

Lo que quiero hacer es cuando esté en estado hover y en estado selected aparezca un fondo degradado. Se que tengo que hacerlo sobreescribiendo el método paintComponent, pero claro, si pinto el fondo en este método desaparecen tanto el Icono establecido por setIcon() y el texto que tenía.

Sabéis cómo debo hacerlo para que después de pintar el fondo degradado, se pinte el icono y el texto que ya tenía establecido. Y lo más importante que aparezcan en el lugar que aparecían. Y también sabriais como puedo saber cuando está en estado RollOver?

Este es el ejemplo que tengo de como he hecho hasta ahora:

Código Java:
Ver original
  1. class MiToggle extends JToggleButton {
  2.         @Override
  3.         public void paintComponent(Graphics g) {
  4.             super.paintComponent(g);
  5.             Graphics2D g2D = (Graphics2D) g;
  6.            
  7.             if (isSelected()) {
  8.                 RoundRectangle2D.Double rect = new RoundRectangle2D.Double(0.5, 0.5, 90.0, 50.0, 2.0, 2.0);
  9.                 g2D.setPaint(new GradientPaint(new Point2D.Double(0.0, 0.0), new Color(255, 255, 255, 255),
  10.                         new Point2D.Double(0.0, 1.0), new Color(207, 231, 237, 255)));
  11.                 g2D.fill(rect);
  12.             }
  13.            
  14.             //Aquí debo pintar el icono y el texto en el lugar correspondiente (como lo haría JToggleButton)
  15.         }
  16.     }

Muchas Gracias y Saludos!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)

Última edición por huspy; 27/03/2012 a las 02:23
  #2 (permalink)  
Antiguo 27/03/2012, 09:43
Avatar de huspy  
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Sobreescribir el método paintComponent de JToggleButton

Buenas de nuevo!

Ya he encontrado la solución, pongo el código:

Código Java:
Ver original
  1. class MiBoton extends JToggleButton {
  2.         @Override
  3.         public void paintComponent(Graphics g) {
  4.             Graphics2D g2D = (Graphics2D) g.create();
  5.             g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  6.  
  7.             if (getModel().isSelected() || getModel().isRollover()) {
  8.                 RoundRectangle2D shape0 = new RoundRectangle2D.Double(0.5, 0.5, getWidth() - 1, getHeight() - 1, 2.0, 2.0);
  9.                 g2D.setPaint(new GradientPaint(new Point2D.Double(0.0, 0.0), new Color(255, 255, 255, 255),
  10.                         new Point2D.Double(0.0, 1.0), new Color(207, 231, 237, 255)));
  11.                 g2D.fill(shape0);
  12.             }
  13.            
  14.             super.paintComponent(g);
  15.         }
  16.     }

Tenía que poner la llamada al padre de paintComponent() después de pintar el fondo. Además para saber si está en estado rollover se hace desde el modelo del boton, getModel().isRollover().

Saludos!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)

Etiquetas: sobreescribir
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 14:39.