jlabel.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 168 行

JAVA
168
字号
/* class JLabel
 *
 * Copyright (C) 2001-2003  R M Pitman
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package charvax.swing;

import charva.awt.Dimension;
import charva.awt.Insets;
import charva.awt.Point;
import charva.awt.Toolkit;
import charva.awt.event.KeyEvent;

/**
 * A display area for a short text string.  A label cannot react to keyboard
 * events and cannot receive the keyboard focus.
 */
public class JLabel
    extends JComponent
{
    /** Construct an empty label.
     */
    public JLabel() {
	this("", SwingConstants.LEFT);
    }

    /** Construct a JLabel with the specified text.
     */
    public JLabel(String text_) {
	this(text_, SwingConstants.LEFT);
    }

    /** 
     * Use this constructor if you want to set the alignment to something
     * other than left-aligned.
     */
    public JLabel(String text_, int align_) {
	_labeltext = text_;
	_width = text_.length();
	switch (align_) {
	    case SwingConstants.LEFT:
		_alignmentX = LEFT_ALIGNMENT;
		break;
	    case SwingConstants.CENTER:
		_alignmentX = CENTER_ALIGNMENT;
		break;
	    case SwingConstants.RIGHT:
		_alignmentX = RIGHT_ALIGNMENT;
		break;
	}
    }

    public void setLength(int length_) { _width = length_; }

    public Dimension minimumSize() {
	return this.getSize();
    }

    public void draw() {

	// Draw the border if it exists
	super.draw();

	/* Get the absolute origin of this component.
	 */
	Point origin = getLocationOnScreen();
	Insets insets = super.getInsets();
	origin.translate(insets.left, insets.top);

	Toolkit term = Toolkit.getDefaultToolkit();
	term.setCursor(origin);

	// we'll sort out justification and video-attributes etc later.
	StringBuffer buf = new StringBuffer(_labeltext);
	int textlength = _labeltext.length();
	if (_width > textlength) {
	    for (int i=textlength; i<_width; i++)
		buf.append(' ');
	}
	else if (_width < textlength)
	    buf.setLength(_width);	// truncate

	int colorpair = getCursesColor();
	term.addString(buf.toString(), 0, colorpair);
    }

    /**
     * This may be wrong, but it'll do for now.
     */
    public Dimension getSize() {
	return new Dimension(this.getWidth(), this.getHeight());
    }

    public int getWidth() {
	Insets insets = super.getInsets();
	return _width + insets.left + insets.right; 
    }

    public int getHeight() {
	Insets insets = super.getInsets();
	return 1 + insets.top + insets.bottom;
    }

    public synchronized void setText(String label_) {
	_labeltext = label_;

	/* If the text is shorter than it was previously, blank out the
	 * previous text.  In practice this means that the label grows
	 * in length but never shrinks.
	 */
	if (label_.length() > _width)
	    _width = label_.length();

	/* If this component is already displayed, generate a PaintEvent
	 * and post it onto the queue.
	 */
	repaint();
    }

    public String getText() { return _labeltext; }

    /** This component will not receive focus when Tab or Shift-Tab is pressed.
     */
    public boolean isFocusTraversable() { return false; }

    /** The JLabel class ignores key events. A JLabel should never
     * have input focus anyway.
     */
    public void processKeyEvent(KeyEvent ke_) { }

    /**
     * The JLabel component never gets the keyboard input focus.
     */
    public void requestFocus() {}

    public void debug(int level_) {
	for (int i=0; i<level_; i++)
	    System.err.print("    ");
	System.err.println("JLabel origin=" + _origin + 
	    " size=" + getSize() + " label=" + _labeltext);
    }

    public String toString() {
	return "JLabel: [" + getText() + "]";
    }

    //====================================================================
    // INSTANCE VARIABLES

    private String _labeltext;
    private int _width;

}

⌨️ 快捷键说明

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