Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2012, 02:16
Avatar de huspy
huspy
 
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 4 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