floatingtextfield.java

来自「开源(Open Source)项目JHotDraw的文档和源程序」· Java 代码 · 共 101 行

JAVA
101
字号
/*
 * @(#)FloatingTextField.java 5.2
 *
 */

package CH.ifa.draw.util;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * A text field overlay that is used to edit a TextFigure.
 * A FloatingTextField requires a two step initialization:
 * In a first step the overlay is created and in a
 * second step it can be positioned.
 *
 * @see CH.ifa.draw.figures.TextFigure
 */
public  class FloatingTextField extends Object {

    private TextField   fEditWidget;
    private Container   fContainer;

    public FloatingTextField() {
        fEditWidget = new TextField(20);
    }

    /**
     * Creates the overlay for the given Component.
     */
    public void createOverlay(Container container) {
        createOverlay(container, null);
    }

    /**
     * Creates the overlay for the given Container using a
     * specific font.
     */
    public void createOverlay(Container container, Font font) {
        container.add(fEditWidget, 0);
        if (font != null)
            fEditWidget.setFont(font);
        fContainer = container;
    }

    /**
     * Adds an action listener
     */
	public void addActionListener(ActionListener listener) {
	    fEditWidget.addActionListener(listener);
	}

    /**
     * Remove an action listener
     */
	public void removeActionListener(ActionListener listener) {
	    fEditWidget.removeActionListener(listener);
	}

    /**
     * Positions the overlay.
     */
    public void setBounds(Rectangle r, String text) {
	    fEditWidget.setText(text);
        fEditWidget.setBounds(r.x, r.y, r.width, r.height);
        fEditWidget.setVisible(true);
	    fEditWidget.selectAll();
	    fEditWidget.requestFocus();
    }

    /**
     * Gets the text contents of the overlay.
     */
    public String getText() {
        return fEditWidget.getText();
    }

    /**
     * Gets the preferred size of the overlay.
     */
    public Dimension getPreferredSize(int cols) {
        return fEditWidget.getPreferredSize();
    }

    /**
     * Removes the overlay.
     */
    public void endOverlay() {
	    fContainer.requestFocus();
	    if (fEditWidget == null)
	        return;
	    fEditWidget.setVisible(false);
	    fContainer.remove(fEditWidget);

	    Rectangle bounds = fEditWidget.getBounds();
	    fContainer.repaint(bounds.x, bounds.y, bounds.width, bounds.height);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?