Tired of the same old buttons? My car radio has buttons in buttons, and you can do the same with Swing. Swing components are also containers which can contain other components.
To illustrate, this program places two buttons and a label in a third button. All three buttons can be clicked independently of the others, and you could register listeners on all three buttons to accomplish your task. To make things more interesting, the container button is a toggle button. This code was tested using JDK1.1.6 and Swing 1.0.3 under Win95:
import java.awt.*;import java.awt.event.*;import com.sun.java.swing.*;public class SwingButtonInButton01 extends JFrame { public static void main(String args[]) { new SwingButtonInButton01(); }//end main() //-----------------------------------------------------// SwingButtonInButton01() {//constructor JToggleButton power = new JToggleButton();//container power.setLayout(new FlowLayout()); JButton am = new JButton("AM");//another button JButton fm = new JButton("FM");//another button power.add(am);//Put button in container button power.add(new JLabel("Power"));//Put label in button power.add(fm);//Put button in container button getContentPane().add(power);//pub button in frame String plafClassName = //set look and feel "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; try{ UIManager.setLookAndFeel(plafClassName); }catch(Exception ex){System.out.println(ex);} SwingUtilities.updateComponentTreeUI(this); getContentPane().setLayout(new FlowLayout()); setSize(300,100); setTitle("Buttons in Buttons"); setVisible(true); // Inner WindowListener class to terminate program addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);}});//end WindowListener }//end constructor}//end class