import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.plaf.metal.OceanTheme;
import javax.swing.JRadioButton;
import java.awt.Color;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.LayoutStyle.ComponentPlacement;
public class ButtonTest extends JFrame {
private JPanel contentPane;
private JComboBox themeComboBox;
private JComboBox lnfComboBox;
class LnfWrap
{
LookAndFeelInfo i;
LnfWrap(LookAndFeelInfo info)
{
i=info;
}
public String toString()
{
return i.getName();
}
}
class MyItemListener implements ItemListener {
JFrame parent;
MyItemListener(JFrame p)
{
parent=p;
}
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange()==ItemEvent.SELECTED)
{
if(e.getSource()==lnfComboBox)
{
if(e.getItem() instanceof LnfWrap)
{
LnfWrap info=(LnfWrap)e.getItem();
try {
UIManager.setLookAndFeel(info.i.getClassName());
SwingUtilities.updateComponentTreeUI(parent);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
else if(e.getSource()==themeComboBox)
{
if(e.getItem().equals("DefaultMetalTheme"))
{
MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
}
else if(e.getItem().equals("Ocean"))
{
MetalLookAndFeel.setCurrentTheme(new OceanTheme());
}
SwingUtilities.updateComponentTreeUI(parent);
}
}
}
};
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ButtonTest frame = new ButtonTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ButtonTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JRadioButton rButton = new JRadioButton("Ich werde nicht rot");
rButton.setSelected(true);
rButton.setForeground(Color.red);
JLabel lblSetLookandfeel = new JLabel("Set LookAndFeel");
lnfComboBox = new JComboBox();
UIManager.LookAndFeelInfo[] infos=UIManager.getInstalledLookAndFeels();
for(int i=0;i<infos.length;i++)
{
lnfComboBox.addItem(new LnfWrap(infos[i]));
}
JLabel lblSetThememetal = new JLabel("Set Theme (Metal only)");
themeComboBox = new JComboBox();
themeComboBox.addItem("Ocean");
themeComboBox.addItem("DefaultMetalTheme");
MyItemListener myListener=new MyItemListener(this);
lnfComboBox.addItemListener(myListener);
themeComboBox.addItemListener(myListener);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(rButton)
.addComponent(themeComboBox, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)
.addComponent(lnfComboBox, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)
.addComponent(lblSetLookandfeel)
.addComponent(lblSetThememetal))
.addContainerGap(282, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(rButton)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(lblSetLookandfeel)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(lnfComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(lblSetThememetal)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(themeComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(117))
);
contentPane.setLayout(gl_contentPane);
}
}