📄 synthlookandfeel.java
字号:
y = bounds.y; width = bounds.width; height = bounds.height; } // Fill in the background, if necessary. boolean subregion = state.isSubregion(); if ((subregion && style.isOpaque(state)) || (!subregion && c.isOpaque())) { g.setColor(style.getColor(state, ColorType.BACKGROUND)); g.fillRect(x, y, width, height); } } static boolean isLeftToRight(Component c) { return c.getComponentOrientation().isLeftToRight(); } /** * Returns the ui that is of type <code>klass</code>, or null if * one can not be found. */ static Object getUIOfType(ComponentUI ui, Class klass) { if (klass.isInstance(ui)) { return ui; } return null; } /** * Creates the Synth look and feel <code>ComponentUI</code> for * the passed in <code>JComponent</code>. * * @param c JComponent to create the <code>ComponentUI</code> for * @return ComponentUI to use for <code>c</code> */ public static ComponentUI createUI(JComponent c) { String key = c.getUIClassID().intern(); if (key == "ButtonUI") { return SynthButtonUI.createUI(c); } else if (key == "CheckBoxUI") { return SynthCheckBoxUI.createUI(c); } else if (key == "CheckBoxMenuItemUI") { return SynthCheckBoxMenuItemUI.createUI(c); } else if (key == "ColorChooserUI") { return SynthColorChooserUI.createUI(c); } else if (key == "ComboBoxUI") { return SynthComboBoxUI.createUI(c); } else if (key == "DesktopPaneUI") { return SynthDesktopPaneUI.createUI(c); } else if (key == "DesktopIconUI") { return SynthDesktopIconUI.createUI(c); } else if (key == "EditorPaneUI") { return SynthEditorPaneUI.createUI(c); } else if (key == "FileChooserUI") { return SynthFileChooserUI.createUI(c); } else if (key == "FormattedTextFieldUI") { return SynthFormattedTextFieldUI.createUI(c); } else if (key == "InternalFrameUI") { return SynthInternalFrameUI.createUI(c); } else if (key == "LabelUI") { return SynthLabelUI.createUI(c); } else if (key == "ListUI") { return SynthListUI.createUI(c); } else if (key == "MenuBarUI") { return SynthMenuBarUI.createUI(c); } else if (key == "MenuUI") { return SynthMenuUI.createUI(c); } else if (key == "MenuItemUI") { return SynthMenuItemUI.createUI(c); } else if (key == "OptionPaneUI") { return SynthOptionPaneUI.createUI(c); } else if (key == "PanelUI") { return SynthPanelUI.createUI(c); } else if (key == "PasswordFieldUI") { return SynthPasswordFieldUI.createUI(c); } else if (key == "PopupMenuSeparatorUI") { return SynthSeparatorUI.createUI(c); } else if (key == "PopupMenuUI") { return SynthPopupMenuUI.createUI(c); } else if (key == "ProgressBarUI") { return SynthProgressBarUI.createUI(c); } else if (key == "RadioButtonUI") { return SynthRadioButtonUI.createUI(c); } else if (key == "RadioButtonMenuItemUI") { return SynthRadioButtonMenuItemUI.createUI(c); } else if (key == "RootPaneUI") { return SynthRootPaneUI.createUI(c); } else if (key == "ScrollBarUI") { return SynthScrollBarUI.createUI(c); } else if (key == "ScrollPaneUI") { return SynthScrollPaneUI.createUI(c); } else if (key == "SeparatorUI") { return SynthSeparatorUI.createUI(c); } else if (key == "SliderUI") { return SynthSliderUI.createUI(c); } else if (key == "SpinnerUI") { return SynthSpinnerUI.createUI(c); } else if (key == "SplitPaneUI") { return SynthSplitPaneUI.createUI(c); } else if (key == "TabbedPaneUI") { return SynthTabbedPaneUI.createUI(c); } else if (key == "TableUI") { return SynthTableUI.createUI(c); } else if (key == "TableHeaderUI") { return SynthTableHeaderUI.createUI(c); } else if (key == "TextAreaUI") { return SynthTextAreaUI.createUI(c); } else if (key == "TextFieldUI") { return SynthTextFieldUI.createUI(c); } else if (key == "TextPaneUI") { return SynthTextPaneUI.createUI(c); } else if (key == "ToggleButtonUI") { return SynthToggleButtonUI.createUI(c); } else if (key == "ToolBarSeparatorUI") { return SynthSeparatorUI.createUI(c); } else if (key == "ToolBarUI") { return SynthToolBarUI.createUI(c); } else if (key == "ToolTipUI") { return SynthToolTipUI.createUI(c); } else if (key == "TreeUI") { return SynthTreeUI.createUI(c); } else if (key == "ViewportUI") { return SynthViewportUI.createUI(c); } return null; } /** * Creates a SynthLookAndFeel. * <p> * For the returned <code>SynthLookAndFeel</code> to be useful you need to * invoke <code>load</code> to specify the set of * <code>SynthStyle</code>s, or invoke <code>setStyleFactory</code>. * * @see #load * @see #setStyleFactory */ public SynthLookAndFeel() { factory = new DefaultSynthStyleFactory(); } /** * Loads the set of <code>SynthStyle</code>s that will be used by * this <code>SynthLookAndFeel</code>. <code>resourceBase</code> is * used to resolve any path based resources, for example an * <code>Image</code> would be resolved by * <code>resourceBase.getResource(path)</code>. Refer to * <a href="doc-files/synthFileFormat.html">Synth File Format</a> * for more information. * * @param input InputStream to load from * @param resourceBase Used to resolve any images or other resources * @throws ParseException If there is an error in parsing * @throws IllegalArgumentException if input or resourceBase is null */ public void load(InputStream input, Class<?> resourceBase) throws ParseException, IllegalArgumentException { if (defaultsMap == null) { defaultsMap = new HashMap(); } new SynthParser().parse(input, (DefaultSynthStyleFactory)factory, resourceBase, defaultsMap); } /** * Called by UIManager when this look and feel is installed. */ public void initialize() { super.initialize(); DefaultLookup.setDefaultLookup(new SynthDefaultLookup()); setStyleFactory(factory); } /** * Called by UIManager when this look and feel is uninstalled. */ public void uninitialize() { // We should uninstall the StyleFactory here, but unfortunately // there are a handful of things that retain references to the // LookAndFeel and expect things to work super.uninitialize(); } /** * Returns the defaults for this SynthLookAndFeel. * * @return Defaults able. */ public UIDefaults getDefaults() { UIDefaults table = new UIDefaults(); Region.registerUIs(table); table.setDefaultLocale(Locale.getDefault()); table.addResourceBundle( "com.sun.swing.internal.plaf.basic.resources.basic" ); table.addResourceBundle("com.sun.swing.internal.plaf.synth.resources.synth"); // These need to be defined for JColorChooser to work. table.put("ColorChooser.swatchesRecentSwatchSize", new Dimension(10, 10)); table.put("ColorChooser.swatchesDefaultRecentColor", Color.RED); table.put("ColorChooser.swatchesSwatchSize", new Dimension(10, 10)); // These are needed for PopupMenu. table.put("PopupMenu.selectedWindowInputMapBindings", new Object[] { "ESCAPE", "cancel", "DOWN", "selectNext", "KP_DOWN", "selectNext", "UP", "selectPrevious", "KP_UP", "selectPrevious", "LEFT", "selectParent", "KP_LEFT", "selectParent", "RIGHT", "selectChild", "KP_RIGHT", "selectChild", "ENTER", "return", "SPACE", "return" }); table.put("PopupMenu.selectedWindowInputMapBindings.RightToLeft", new Object[] { "LEFT", "selectChild", "KP_LEFT", "selectChild", "RIGHT", "selectParent", "KP_RIGHT", "selectParent", }); if (defaultsMap != null) { table.putAll(defaultsMap); } return table; } /** * Returns true, SynthLookAndFeel is always supported. * * @return true. */ public boolean isSupportedLookAndFeel() { return true; } /** * Returns false, SynthLookAndFeel is not a native look and feel. * * @return true. */ public boolean isNativeLookAndFeel() { return false; } /** * Returns a textual description of SynthLookAndFeel. * * @return textual description of synth. */ public String getDescription() { return "Synth look and feel"; } /** * Return a short string that identifies this look and feel. * * @return a short string identifying this look and feel. */ public String getName() { return "Synth look and feel"; } /** * Return a string that identifies this look and feel. * * @return a short string identifying this look and feel. */ public String getID() { return "Synth"; } /** * Returns whether or not the UIs should update their * <code>SynthStyles</code> from the <code>SynthStyleFactory</code> * when the ancestor of the <code>JComponent</code> changes. A subclass * that provided a <code>SynthStyleFactory</code> that based the * return value from <code>getStyle</code> off the containment hierarchy * would override this method to return true. * * @return whether or not the UIs should update their * <code>SynthStyles</code> from the <code>SynthStyleFactory</code> * when the ancestor changed. */ public boolean shouldUpdateStyleOnAncestorChanged() { return false; } private void writeObject(java.io.ObjectOutputStream out) throws IOException { throw new NotSerializableException(this.getClass().getName()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -