Boton ON/OFF en Java.

Quisiera hacer un botón diferente al tipico JButon rectangular, pero no encuentro como hacerlo.

Me gustaria un boton que al pulsarlo cambie de color, y al pulsarlo de nuevo retome el color inicial; o que al pulsarlo se quede hundido, y al pulsar de nuevo quede fuera.

Saludos.
 
Bueno, he conseguido algo, lo dejo por si le sirve a alguien.

Código:
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JToggleButton;

public class ToggleButtonCheckBoxRadioButton extends JFrame {
  public static void main(String[] args) {
    ToggleButtonCheckBoxRadioButton that = new ToggleButtonCheckBoxRadioButton();
    that.setVisible(true);
  }

  public ToggleButtonCheckBoxRadioButton() {
    setSize(450, 350);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    getContentPane().add(new TogglePanel(), BorderLayout.SOUTH);
  }
}

class TogglePanel extends JPanel {
  public TogglePanel() {
	ButtonGroup botones = new ButtonGroup();//++++++++++++++++++++++
    JToggleButton tog = new JToggleButton("ON");
    JToggleButton tog1 = new JToggleButton("OFF");
    ItemListener listener = new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
        AbstractButton src = (AbstractButton) (e.getSource());
        if(src.getText()=="ON"){
        	System.out.println("ON");
        }
        if(src.getText()=="OFF"){
        	System.out.println("OFF");
        }
      }
    };
    botones.add( tog );//++++++++++++++++
    botones.add( tog1 );//++++++++++++++++
    tog.addItemListener(listener);
    add(tog);
    tog1.addItemListener(listener);
    add(tog1);
  }
}
 
Atrás
Arriba