import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FirstSample{
public static void main(String[] args){
ButtonFrame frame=new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ButtonFrame extends JFrame{
public ButtonFrame(){
setTitle("Michael");
setSize(WIDTH,HEIGHT);
ButtonPanel panel=new ButtonPanel();
add(panel);
}
public static final int WIDTH=800;
public static final int HEIGHT=600;
}
class ButtonPanel extends JPanel{
public ButtonPanel(){
Action redAction=new ColorAction("Yellow",new ImageIcon("red.gif"),Color.RED);
Action greenAction=new ColorAction("Green",new ImageIcon("green.gif"),Color.GREEN);
Action blueAction=new ColorAction("Blue",new ImageIcon("blue.gif"),Color.BLUE);
Action whiteAction=new ColorAction("White",new ImageIcon("white.gif"),Color.WHITE);
add(new JButton(redAction));
add(new JButton(greenAction));
add(new JButton(blueAction));
add(new JButton(whiteAction));
InputMap imap=getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke("ctrl R"), "panel.red");
imap.put(KeyStroke.getKeyStroke("ctrl G"), "panel.green");
imap.put(KeyStroke.getKeyStroke("ctrl B"), "panel.blue");
imap.put(KeyStroke.getKeyStroke("ctrl W"), "panel.white");
ActionMap amap=getActionMap();
amap.put("panel.red",redAction);
amap.put("panel.green",greenAction);
amap.put("panel.blue",blueAction);
amap.put("panel.white",whiteAction);
UIManager.LookAndFeelInfo[] infos=UIManager.getInstalledLookAndFeels();
for(UIManager.LookAndFeelInfo info:infos)
makeButton(info.getName(),info.getClassName());
}
void makeButton(String name,final String plafName){
JButton button=new JButton(name);
add(button);
button.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
try{
UIManager.setLookAndFeel(plafName);
SwingUtilities.updateComponentTreeUI(ButtonPanel.this);
}
catch (Exception e){
e.printStackTrace();
}
}
});
}
public class ColorAction extends AbstractAction{
public ColorAction(String name,Icon icon,Color c){
putValue(Action.NAME,name);
putValue(Action.SMALL_ICON,icon);
putValue(Action.SHORT_DESCRIPTION,"Set the panel color to"+name.toLowerCase());
putValue("color",c);
}
public void actionPerformed(ActionEvent event){
Color c=(Color) getValue("color");
setBackground(c);
}
}
}