package org.swing.on.steroids.swing.components;
import org.swing.on.steroids.swing.components.ButtonPanel;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
/**
* @author Alexander Potochkin
*
* https://swinghelper.dev.java.net/
* http://weblogs.java.net/blog/alexfromsun/
*/
class ButtonPanelDemo
extends JFrame
{
private ButtonGroup radioGroup = new ButtonGroup();
public ButtonPanelDemo()
{
super( "JXButtonPanel demo" );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setResizable( false );
JPanel topPanel = new JPanel( new GridLayout( 1, 0 ) );
final ButtonPanel radioGroupPanel = createRadioJXButtonPanel();
topPanel.add( radioGroupPanel );
final ButtonPanel checkBoxPanel = createCheckBoxJXButtonPanel();
topPanel.add( checkBoxPanel );
add( topPanel );
add( createButtonJXButtonPanel(), BorderLayout.SOUTH );
pack();
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu( "Options" );
JMenuItem item = new JMenuItem( "Unselect radioButtons" );
item.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.ALT_MASK ) );
item.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
// hack for 1.5
// in 1.6 ButtonGroup.clearSelection added
JRadioButton b = new JRadioButton();
radioGroup.add( b );
b.setSelected( true );
radioGroup.remove( b );
}
} );
menu.add( item );
bar.add( menu );
setJMenuBar( bar );
setSize( 300, 300 );
setLocationRelativeTo( null );
}
private ButtonPanel createRadioJXButtonPanel()
{
ButtonPanel panel = new ButtonPanel();
panel.setLayout( new GridLayout( 0, 1 ) );
JRadioButton one = new JRadioButton( "One" );
panel.add( one );
radioGroup.add( one );
JRadioButton two = new JRadioButton( "Two" );
panel.add( two );
radioGroup.add( two );
JRadioButton three = new JRadioButton( "Three" );
panel.add( three );
radioGroup.add( three );
JRadioButton four = new JRadioButton( "Four" );
panel.add( four );
radioGroup.add( four );
one.setSelected( true );
panel.setBorder( BorderFactory.createTitledBorder( "JXButtonPanel" ) );
return panel;
}
private ButtonPanel createCheckBoxJXButtonPanel()
{
ButtonPanel panel = new ButtonPanel();
panel.setLayout( new GridLayout( 0, 1 ) );
JCheckBox one = new JCheckBox( "One" );
panel.add( one );
JCheckBox two = new JCheckBox( "Two" );
panel.add( two );
JCheckBox three = new JCheckBox( "Three" );
panel.add( three );
JCheckBox four = new JCheckBox( "Four" );
panel.add( four );
panel.setBorder( BorderFactory.createTitledBorder( "JXButtonPanel" ) );
return panel;
}
private JPanel createButtonJXButtonPanel()
{
JPanel ret = new JPanel( new BorderLayout() );
JLabel label = new JLabel( "Does JXButtonPanel support arrow keys ?" );
label.setBorder( BorderFactory.createEmptyBorder( 0, 0, 10, 0 ) );
JPanel temp = new JPanel();
temp.add( label );
ret.add( temp );
ButtonPanel panel = new ButtonPanel();
panel.setCyclic( true );
panel.add( new JButton( "Yes" ) );
panel.add( new JButton( "Sure" ) );
panel.add( new JButton( "Absolutely !" ) );
panel.setBorder( BorderFactory.createTitledBorder( null,
"JXButtonPanel.setCyclic(true)",
TitledBorder.CENTER, TitledBorder.BOTTOM ) );
ret.setBorder( BorderFactory.createEmptyBorder( 10, 0, 10, 0 ) );
ret.add( panel, BorderLayout.SOUTH );
return ret;
}
public static void main( String[] args )
throws Exception
{
SwingUtilities.invokeLater( new Runnable()
{
public void run()
{
new ButtonPanelDemo().setVisible( true );
}
} );
}
}