स्विंग के लिए UIManager.getColor()
कुंजी में से कोई सूची है? मुझे यह ऑनलाइन नहीं लगता है, "Panel.background"
और "Table.selectionBackground"
जैसे तारों के लिए कभी-कभी संदर्भ।स्विंग UIManager.getColor() कुंजी
उत्तर
मैं एक ही बात की तलाश में है और इस पृष्ठ के साथ ही http://nadeausoftware.com/node/85 पर इन सभी गुणों का एक उत्कृष्ट सिंहावलोकन मिला था।
वे तरह के दिखने और महसूस कार्यान्वयन पर निर्भर हैं। मूल कुंजी के लिए BasicLookAndFeel.java
में देखें। सभी पीएल & एफ की तुलना करने की अपेक्षा न करें, या संस्करणों के बीच भी रहें।
मुझे नहीं लगता कि चाबियों का एक निर्धारित मानक सेट है। लेकिन तुम लोगों को वर्तमान में वर्णमाला के क्रम में उपलब्ध सूची कोड के इस बिट की कोशिश कर सकते:
List<String> colors = new ArrayList<String>();
for (Map.Entry<Object, Object> entry : UIManager.getDefaults().entrySet()) {
if (entry.getValue() instanceof Color) {
colors.add((String) entry.getKey()); // all the keys are strings
}
}
Collections.sort(colors);
for (String name : colors)
System.out.println(name);
इसमें काफ़ी समय यहां पुन: पेश करने के लिए एक सूची तैयार करता है।
वर्तमान में (jdk1.8.0_45), 'systemLookAndFeelClassName = com के लिए। sun.java.swing.plaf.windows.WindowsLookAndFeel', कक्षाएं 'java.awt.color' नहीं हैं, लेकिन' com.sun.java.swing.plaf.windows.DesktopProperty' दुर्भाग्य से जांच के उदाहरण में विफल रही हैं। –
@mmyers मुझे प्रेरित किया। एक क्रमबद्ध तालिका में UIManager डिफ़ॉल्ट सूचीबद्ध करने के लिए यहां एक छोटा प्रोग्राम है।
package com.example.test.gui;
import java.awt.Color;
import java.awt.Component;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.SortedList;
import ca.odell.glazedlists.gui.AbstractTableComparatorChooser;
import ca.odell.glazedlists.gui.TableFormat;
import ca.odell.glazedlists.swing.EventTableModel;
import ca.odell.glazedlists.swing.TableComparatorChooser;
public class UIManagerDefaultsViewer {
public static class UIEntry
{
final private String key;
final private Object value;
UIEntry(Map.Entry<Object,Object> e)
{
this.key = e.getKey().toString();
this.value = e.getValue();
}
public String getKey() {
return key;
}
public Object getValue() {
return value;
}
public Class getValueClass() {
if (value == null)
return null; // ?!?!?!
return value.getClass();
}
public String getClassName() {
// doesn't handle arrays properly
if (value == null)
return "";
return value.getClass().getName();
}
}
public static class UIEntryRenderer extends DefaultTableCellRenderer
{
Color[] defaults = new Color[4];
public UIEntryRenderer()
{
super();
defaults[0] = UIManager.getColor("Table.background");
defaults[1] = UIManager.getColor("Table.selectionBackground");
defaults[2] = UIManager.getColor("Table.foreground");
defaults[3] = UIManager.getColor("Table.selectionForeground");
}
public void setDefaultColors(Component cell, boolean isSelected)
{
cell.setBackground(defaults[isSelected ? 1 : 0]);
cell.setForeground(defaults[isSelected ? 3 : 2]);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
if (table.convertColumnIndexToModel(column) == 1) // the value column
{
final EventTableModel<UIEntry> tableModel =
(EventTableModel<UIEntry>) table.getModel();
UIEntry e = tableModel.getElementAt(row);
JLabel l = (JLabel)cell;
if (value instanceof Color)
{
Color c = (Color)value;
cell.setBackground(c);
cell.setForeground(
c.getRed()+c.getGreen()+c.getBlue() >= 128*3
? Color.black : Color.white);
// choose either black or white depending on brightness
l.setText(String.format("Color 0x%08x (%d,%d,%d alpha=%d)",
c.getRGB(), c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()));
return cell;
}
else if (e.getKey().endsWith("ont"))
// possible font, not always ".font"
{
// fonts are weird, for some reason the value returned
// in the entry set of UIManager.getDefaults()
// is not the same type as the value "v" below
Object v = UIManager.get(e.getKey());
if (v instanceof javax.swing.plaf.FontUIResource)
{
javax.swing.plaf.FontUIResource font =
(javax.swing.plaf.FontUIResource)v;
l.setText("Font "+font.getFontName()+" "+font.getSize());
}
}
}
setDefaultColors(cell, isSelected);
return cell;
}
}
public static void main(String[] args) {
final EventList<UIEntry> uiEntryList =
GlazedLists.threadSafeList(new BasicEventList<UIEntry>());
for (Map.Entry<Object,Object> key : UIManager.getDefaults().entrySet())
{
uiEntryList.add(new UIEntry(key));
}
final SortedList<UIEntry> sortedUIEntryList = new SortedList<UIEntry>(uiEntryList, null);
// build a JTable
String[] propertyNames = new String[] {"key","value","className"};
String[] columnLabels = new String[] {"Key", "Value", "Class"};
TableFormat<UIEntry> tf = GlazedLists.tableFormat(UIEntry.class, propertyNames, columnLabels);
EventTableModel<UIEntry> etm = new EventTableModel<UIEntry>(sortedUIEntryList, tf);
JTable t = new JTable(etm);
TableComparatorChooser<UIEntry> tcc = TableComparatorChooser.install(t,
sortedUIEntryList, AbstractTableComparatorChooser.SINGLE_COLUMN,
tf);
sortedUIEntryList.setComparator(tcc.getComparatorsForColumn(0).get(0));
// default to sort by the key
t.setDefaultRenderer(Object.class, new UIEntryRenderer());
JFrame f = new JFrame("UI Manager Defaults Viewer");
// show the frame
f.add(new JScrollPane(t));
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
नेटबीन जीयूआई बिल्डर में, जब आप एक रंग संपादित करते हैं तो आप इन सभी सूचीबद्ध (वास्तविक रंग मानों के बिना) के साथ एक जेएलिस्ट से चुन सकते हैं। यह वास्तव में है जहां मुझे यह विचार आया कि उन्हें सूचीबद्ध करना संभव हो सकता है। हालांकि, एक टेबल बहुत अच्छी है। –
इस कार्यक्रम सबसे अच्छा मैं UIManager मूल्यों दृश्यमान करने के लिए देखा है है (उदाहरण के फ़ॉन्ट्स, रंग, बॉर्डर): http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/
यह खोज का अभाव है, लेकिन यह घटक या मान प्रकार है, जो बहुत अच्छा है द्वारा फ़िल्टर कर सकते ।
मुझे एक आसान जावा वेब स्टार्ट ऐप मिला जो मदद करनी चाहिए: http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/ –