Java by API/javax.swing/UIManager
Версия от 17:43, 31 мая 2010; (обсуждение)
Содержание
- 1 UIManager: getBorder(Object key)
- 2 UIManager: getCrossPlatformLookAndFeelClassName()
- 3 UIManager: getInstalledLookAndFeels()
- 4 UIManager: getLookAndFeelDefaults()
- 5 UIManager: get(Object key)
- 6 UIManager: getSystemLookAndFeelClassName()
- 7 UIManager.LookAndFeelInfo: getClassName()
- 8 UIManager.LookAndFeelInfo: getClassName() (2)
- 9 UIManager.LookAndFeelInfo: getName()
- 10 UIManager: put(Object key, Object value)
- 11 UIManager: setLookAndFeel(String className)
UIManager: getBorder(Object key)
import java.awt.BorderLayout;
import java.awt.ruponent;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class MainClass {
public static void main(String args[]) {
String rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } };
String headers[] = { "Upper", "Lower" };
JFrame frame = new JFrame("Label Header");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(rows, headers);
JScrollPane scrollPane = new JScrollPane(table);
Border headerBorder = UIManager.getBorder("TableHeader.cellBorder");
JLabel headerLabel1 = new JLabel(headers[0], JLabel.CENTER);
headerLabel1.setBorder(headerBorder);
JLabel headerLabel2 = new JLabel(headers[1], JLabel.CENTER);
headerLabel2.setBorder(headerBorder);
TableCellRenderer renderer = new JComponentTableCellRenderer();
TableColumnModel columnModel = table.getColumnModel();
TableColumn column0 = columnModel.getColumn(0);
TableColumn column1 = columnModel.getColumn(1);
column0.setHeaderRenderer(renderer);
column0.setHeaderValue(headerLabel1);
column1.setHeaderRenderer(renderer);
column1.setHeaderValue(headerLabel2);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
class JComponentTableCellRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return (JComponent)value;
}
}
UIManager: getCrossPlatformLookAndFeelClassName()
import javax.swing.JFrame;
import javax.swing.UIManager;
public class Main {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Look and feel not set.");
}
JFrame aWindow = new JFrame("This is the Window Title");
aWindow.setBounds(50, 100, 300, 300);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aWindow.setVisible(true);
}
}
UIManager: getInstalledLookAndFeels()
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MainClass {
public static void main(String args[]) {
final JFrame frame = new JFrame("Change Look");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
Object source = actionEvent.getSource();
String lafClassName = null;
if (source instanceof JComboBox) {
JComboBox comboBox = (JComboBox) source;
lafClassName = (String) comboBox.getSelectedItem();
} else if (source instanceof JButton) {
lafClassName = actionEvent.getActionCommand();
}
if (lafClassName != null) {
final String finalLafClassName = lafClassName;
try {
UIManager.setLookAndFeel(finalLafClassName);
SwingUtilities.updateComponentTreeUI(frame);
} catch (Exception exception) {
JOptionPane.showMessageDialog(frame, "Can"t change look and feel", "Invalid PLAF",
JOptionPane.ERROR_MESSAGE);
}
}
}
};
UIManager.LookAndFeelInfo looks[] = UIManager.getInstalledLookAndFeels();
DefaultComboBoxModel model = new DefaultComboBoxModel();
JComboBox comboBox = new JComboBox(model);
JPanel panel = new JPanel();
for (int i = 0, n = looks.length; i < n; i++) {
JButton button = new JButton(looks[i].getName());
model.addElement(looks[i].getClassName());
button.setActionCommand(looks[i].getClassName());
button.addActionListener(actionListener);
panel.add(button);
}
comboBox.addActionListener(actionListener);
frame.add(comboBox, BorderLayout.NORTH);
frame.add(panel, BorderLayout.SOUTH);
frame.setSize(350, 150);
frame.setVisible(true);
}
}
UIManager: getLookAndFeelDefaults()
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.UIManager;
public class Main {
public static void main(String[] args) throws Exception {
Set defaults = UIManager.getLookAndFeelDefaults().entrySet();
for (Iterator i = defaults.iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
System.out.print(entry.getKey() + " = ");
System.out.println(entry.getValue());
}
}
}
UIManager: get(Object key)
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class Main {
public static void main(String args[]) {
JFrame frame = new JFrame("Active Example");
UIManager.put("LabelFactory", new ActiveLabel());
final JPanel panel = new JPanel();
JButton button = new JButton("Get");
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
JLabel label = (JLabel) UIManager.get("LabelFactory");
panel.add(label);
panel.revalidate();
}
};
button.addActionListener(actionListener);
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(200, 200);
frame.setVisible(true);
}
}
class ActiveLabel implements UIDefaults.ActiveValue {
private int counter = 0;
public Object createValue(UIDefaults defaults) {
JLabel label = new JLabel("" + counter++);
return label;
}
}
UIManager: getSystemLookAndFeelClassName()
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MainClass {
protected JFrame theFrame = new JFrame("LNF Switcher");
protected Container cp;
protected String curLF = "javax.swing.plaf.metal.MetalLookAndFeel";
protected JRadioButton previousButton;
public MainClass() {
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cp = theFrame.getContentPane();
cp.setLayout(new FlowLayout());
ButtonGroup bg = new ButtonGroup();
JRadioButton bJava = new JRadioButton("Java");
bJava.addActionListener(new LNFSetter("javax.swing.plaf.metal.MetalLookAndFeel", bJava));
bg.add(bJava);
cp.add(bJava);
JRadioButton bMSW = new JRadioButton("MS-Windows");
bMSW.addActionListener(new LNFSetter("com.sun.java.swing.plaf.windows.WindowsLookAndFeel", bMSW));
bg.add(bMSW);
cp.add(bMSW);
JRadioButton bMotif = new JRadioButton("Motif");
bMotif.addActionListener(new LNFSetter("com.sun.java.swing.plaf.motif.MotifLookAndFeel", bMotif));
bg.add(bMotif);
cp.add(bMotif);
JRadioButton bMac = new JRadioButton("Sun-MacOS");
bMac.addActionListener(new LNFSetter("com.sun.java.swing.plaf.mac.MacLookAndFeel", bMac));
bg.add(bMac);
cp.add(bMac);
String defaultLookAndFeel = UIManager.getSystemLookAndFeelClassName();
JRadioButton bDefault = new JRadioButton("Default");
bDefault.addActionListener(new LNFSetter(defaultLookAndFeel, bDefault));
bg.add(bDefault);
cp.add(bDefault);
(previousButton = bDefault).setSelected(true);
theFrame.pack();
theFrame.setVisible(true);
}
class LNFSetter implements ActionListener {
String theLNFName;
JRadioButton thisButton;
LNFSetter(String lnfName, JRadioButton me) {
theLNFName = lnfName;
thisButton = me;
}
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel(theLNFName);
SwingUtilities.updateComponentTreeUI(theFrame);
theFrame.pack();
} catch (Exception evt) {
JOptionPane.showMessageDialog(null, "setLookAndFeel didn"t work: " + evt, "UI Failure",
JOptionPane.INFORMATION_MESSAGE);
previousButton.setSelected(true); // reset the GUI to agree
}
previousButton = thisButton;
}
}
public static void main(String[] argv) {
new MainClass();
}
}
UIManager.LookAndFeelInfo: getClassName()
import javax.swing.UIManager;
public class MainClass {
public static void main (String args[]) {
UIManager.LookAndFeelInfo plaf[] = UIManager.getInstalledLookAndFeels();
for (int i=0, n=plaf.length; i<n; i++) {
System.out.println("Name: " + plaf[i].getName());
System.out.println(" Class name: " + plaf[i].getClassName());
}
}
}
UIManager.LookAndFeelInfo: getClassName() (2)
/*
javax.swing.plaf.metal.MetalLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
*/
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
public class MainClass {
public static void main(String[] args) throws Exception {
UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();
for (int i = 0; i < infos.length; i++) {
LookAndFeelInfo info = infos[i];
System.out.println(info.getClassName());
}
}
}
UIManager.LookAndFeelInfo: getName()
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MainClass {
public static void main(String args[]) {
final JFrame frame = new JFrame("Change Look");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
Object source = actionEvent.getSource();
String lafClassName = null;
if (source instanceof JComboBox) {
JComboBox comboBox = (JComboBox) source;
lafClassName = (String) comboBox.getSelectedItem();
} else if (source instanceof JButton) {
lafClassName = actionEvent.getActionCommand();
}
if (lafClassName != null) {
final String finalLafClassName = lafClassName;
try {
UIManager.setLookAndFeel(finalLafClassName);
SwingUtilities.updateComponentTreeUI(frame);
} catch (Exception exception) {
JOptionPane.showMessageDialog(frame, "Can"t change look and feel", "Invalid PLAF",
JOptionPane.ERROR_MESSAGE);
}
}
}
};
UIManager.LookAndFeelInfo looks[] = UIManager.getInstalledLookAndFeels();
DefaultComboBoxModel model = new DefaultComboBoxModel();
JComboBox comboBox = new JComboBox(model);
JPanel panel = new JPanel();
for (int i = 0, n = looks.length; i < n; i++) {
JButton button = new JButton(looks[i].getName());
model.addElement(looks[i].getClassName());
button.setActionCommand(looks[i].getClassName());
button.addActionListener(actionListener);
panel.add(button);
}
comboBox.addActionListener(actionListener);
frame.add(comboBox, BorderLayout.NORTH);
frame.add(panel, BorderLayout.SOUTH);
frame.setSize(350, 150);
frame.setVisible(true);
}
}
UIManager: put(Object key, Object value)
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class MainClass {
public static void main(final String args[]) {
UIManager.put("OptionPane.cancelButtonText", "Annuler");
UIManager.put("OptionPane.noButtonText", "Non");
UIManager.put("OptionPane.okButtonText", "D"accord");
UIManager.put("OptionPane.yesButtonText", "Oui");
int result = JOptionPane.showConfirmDialog(new JFrame(),
"Est-ce que vous avez 18 ans ou plus?", "Choisisez une option",
JOptionPane.YES_NO_CANCEL_OPTION);
if (result == JOptionPane.YES_OPTION) {
System.out.println("Yes");
} else if (result == JOptionPane.NO_OPTION) {
System.out.println("No");
} else if (result == JOptionPane.CANCEL_OPTION) {
System.out.println("Cancel");
} else if (result == JOptionPane.CLOSED_OPTION) {
System.out.println("Closed");
}
}
}
UIManager: setLookAndFeel(String className)
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MainClass {
protected JFrame theFrame = new JFrame("LNF Switcher");
protected Container cp;
protected String curLF = "javax.swing.plaf.metal.MetalLookAndFeel";
protected JRadioButton previousButton;
public MainClass() {
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cp = theFrame.getContentPane();
cp.setLayout(new FlowLayout());
ButtonGroup bg = new ButtonGroup();
JRadioButton bJava = new JRadioButton("Java");
bJava.addActionListener(new LNFSetter("javax.swing.plaf.metal.MetalLookAndFeel", bJava));
bg.add(bJava);
cp.add(bJava);
JRadioButton bMSW = new JRadioButton("MS-Windows");
bMSW.addActionListener(new LNFSetter("com.sun.java.swing.plaf.windows.WindowsLookAndFeel", bMSW));
bg.add(bMSW);
cp.add(bMSW);
JRadioButton bMotif = new JRadioButton("Motif");
bMotif.addActionListener(new LNFSetter("com.sun.java.swing.plaf.motif.MotifLookAndFeel", bMotif));
bg.add(bMotif);
cp.add(bMotif);
JRadioButton bMac = new JRadioButton("Sun-MacOS");
bMac.addActionListener(new LNFSetter("com.sun.java.swing.plaf.mac.MacLookAndFeel", bMac));
bg.add(bMac);
cp.add(bMac);
String defaultLookAndFeel = UIManager.getSystemLookAndFeelClassName();
JRadioButton bDefault = new JRadioButton("Default");
bDefault.addActionListener(new LNFSetter(defaultLookAndFeel, bDefault));
bg.add(bDefault);
cp.add(bDefault);
(previousButton = bDefault).setSelected(true);
theFrame.pack();
theFrame.setVisible(true);
}
class LNFSetter implements ActionListener {
String theLNFName;
JRadioButton thisButton;
LNFSetter(String lnfName, JRadioButton me) {
theLNFName = lnfName;
thisButton = me;
}
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel(theLNFName);
SwingUtilities.updateComponentTreeUI(theFrame);
theFrame.pack();
} catch (Exception evt) {
JOptionPane.showMessageDialog(null, "setLookAndFeel didn"t work: " + evt, "UI Failure",
JOptionPane.INFORMATION_MESSAGE);
previousButton.setSelected(true); // reset the GUI to agree
}
previousButton = thisButton;
}
}
public static void main(String[] argv) {
new MainClass();
}
}