windowstextfieldui.java
来自「JAVA 所有包」· Java 代码 · 共 158 行
JAVA
158 行
/* * @(#)WindowsTextFieldUI.java 1.24 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.windows;import java.awt.*;import java.awt.event.*;import java.beans.PropertyChangeEvent;import javax.swing.plaf.*;import javax.swing.plaf.basic.BasicTextFieldUI;import javax.swing.text.*;import javax.swing.*;import javax.swing.plaf.UIResource;import sun.swing.DefaultLookup;/** * Provides the Windows look and feel for a text field. This * is basically the following customizations to the default * look-and-feel. * <ul> * <li>The border is beveled (using the standard control color). * <li>The background is white by default. * <li>The highlight color is a dark color, blue by default. * <li>The foreground color is high contrast in the selected * area, white by default. The unselected foreground is black. * <li>The cursor blinks at about 1/2 second intervals. * <li>The entire value is selected when focus is gained. * <li>Shift-left-arrow and shift-right-arrow extend selection * <li>Cntrl-left-arrow and cntrl-right-arrow act like home and * end respectively. * </ul> * <p> * <strong>Warning:</strong> * Serialized objects of this class will not be compatible with * future Swing releases. The current serialization support is appropriate * for short term storage or RMI between applications running the same * version of Swing. A future release of Swing will provide support for * long term persistence. * * @author Timothy Prinzing * @version 1.24 11/17/05 */public class WindowsTextFieldUI extends BasicTextFieldUI{ /** * Creates a UI for a JTextField. * * @param c the text field * @return the UI */ public static ComponentUI createUI(JComponent c) { return new WindowsTextFieldUI(); } /** * Paints a background for the view. This will only be * called if isOpaque() on the associated component is * true. The default is to paint the background color * of the component. * * @param g the graphics context */ protected void paintBackground(Graphics g) { super.paintBackground(g); } /** * Creates the caret for a field. * * @return the caret */ protected Caret createCaret() { return new WindowsFieldCaret(); } /** * WindowsFieldCaret has different scrolling behavior than * DefaultCaret. */ static class WindowsFieldCaret extends DefaultCaret implements UIResource { public WindowsFieldCaret() { super(); } /** * Adjusts the visibility of the caret according to * the windows feel which seems to be to move the * caret out into the field by about a quarter of * a field length if not visible. */ protected void adjustVisibility(Rectangle r) { SwingUtilities.invokeLater(new SafeScroller(r)); } /** * Gets the painter for the Highlighter. * * @return the painter */ protected Highlighter.HighlightPainter getSelectionPainter() { return WindowsTextUI.WindowsPainter; } private class SafeScroller implements Runnable { SafeScroller(Rectangle r) { this.r = r; } public void run() { JTextField field = (JTextField) getComponent(); if (field != null) { TextUI ui = field.getUI(); int dot = getDot(); // PENDING: We need to expose the bias in DefaultCaret. Position.Bias bias = Position.Bias.Forward; Rectangle startRect = null; try { startRect = ui.modelToView(field, dot, bias); } catch (BadLocationException ble) {} BoundedRangeModel vis = field.getHorizontalVisibility(); int x = r.x + vis.getValue(); int quarterSpan = vis.getExtent() / 4; if (x < vis.getValue()) { vis.setValue(x - quarterSpan); } else if (x > vis.getValue() + vis.getExtent()) { vis.setValue(x - (3 * quarterSpan)); } // If we scroll, our visual location will have changed, // but we won't have updated our internal location as // the model hasn't changed. This checks for the change, // and if necessary, resets the internal location. if (startRect != null) { try { Rectangle endRect; endRect = ui.modelToView(field, dot, bias); if (endRect != null && !endRect.equals(startRect)){ damage(endRect); } } catch (BadLocationException ble) {} } } } private Rectangle r; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?