|
What this is
Other links
The source code/* ** A simple Label widget. ** Copyright (c) 1997 by Timothy Gerard Endres ** ** This program is free software. ** ** You may redistribute it and/or modify it under the terms of the GNU ** General Public License as published by the Free Software Foundation. ** Version 2 of the license should be included with this distribution in ** the file LICENSE, as well as License.html. If the license is not ** included with this distribution, you may find a copy at the FSF web ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. ** ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR ** REDISTRIBUTION OF THIS SOFTWARE. ** */ package com.ice.widget; import java.awt.*; import java.awt.event.*; public class SimpleLabel extends Component implements FocusListener { protected String label; protected int labelWidth; protected int labelHeight; private boolean kludgeStyle; private int styleToKludge; protected int vMargin; protected int hMargin; protected int borderWidth; protected int fontHeight; protected int fontAscent; protected int fontDescent; protected int fontLeading; protected Color borderColor; protected Dimension mDim, pDim; public SimpleLabel( String label ) { super(); this.borderWidth = 0; this.borderColor = Color.black; this.kludgeStyle = false; this.styleToKludge = 0; this.hMargin = 2; this.vMargin = 0; this.labelWidth = 0; this.fontHeight = 0; this.fontAscent = 0; this.fontDescent = 0; this.label = label; } public String getText() { return this.label; } public void setText( String text ) { this.label = text; this.repaint(); } public void setStyle( int style ) { Font font = this.getFont(); if ( font != null ) // in case we're not graphics-ed yet. { Font newFont = new Font( font.getName(), style, font.getSize() ); this.setFont( newFont ); this.kludgeStyle = false; } else { this.kludgeStyle = true; this.styleToKludge = style; } } public void setBorderWidth( int width ) { this.borderWidth = width; } public void setBorderColor( Color color ) { this.borderColor = color; } public void setHMargin( int margin ) { this.hMargin = margin; } public void setVMargin( int margin ) { this.vMargin = margin; } public void update( Graphics updateG ) { this.paint( updateG ); } public synchronized void paint( Graphics g ) { if ( ! this.isVisible() ) return; int i, x, y; int xorig = 0; int yorig = 0; Dimension d = this.getSize(); Color saveColor = g.getColor(); // FILL UNDONE g.setColor( this.getBackground() ); g.fillRect( xorig, yorig, xorig + d.width, yorig + d.height ); // FRAME if ( this.borderWidth == 1 ) { g.setColor( this.borderColor ); g.drawLine( xorig, yorig + (d.height-1), xorig + (d.width-1), yorig + (d.height-1) ); g.drawLine( xorig + (d.width-1), yorig, xorig + (d.width-1), yorig + (d.height-1) ); g.drawLine( xorig, yorig, xorig + (d.width-1), yorig ); g.drawLine( xorig, yorig, xorig, yorig + (d.height-1) ); } else if ( this.borderWidth > 1 ) { g.setColor( this.borderColor ); // bottom g.fillRect( xorig, yorig + (d.height - this.borderWidth), d.width, this.borderWidth ); // left g.fillRect( xorig, yorig, this.borderWidth, d.height ); //top g.fillRect( xorig, yorig, d.width, this.borderWidth ); //right g.fillRect( xorig + (d.width - this.borderWidth), yorig, this.borderWidth, d.height ); } // TEXT // UNDONE - switch ( this.alignment )... // x = ( xorig + this.borderWidth + hMargin ); y = ( yorig + d.height ) - ( this.borderWidth + this.vMargin + this.fontDescent ); g.setColor( this.getForeground() ); g.setFont( this.getFont() ); g.drawString( this.label, x, y ); // Restore g.setColor( saveColor ); } public void focusLost( FocusEvent event ) { } public void focusGained( FocusEvent event ) { this.transferFocus(); } public boolean isFocusTraversable() { return false; } public void computeDimensions() { Dimension sz = this.getSize(); Graphics g = this.getGraphics(); FontMetrics fm = g.getFontMetrics( this.getFont() ); this.fontHeight = fm.getHeight(); this.fontDescent = fm.getDescent(); this.fontAscent = fm.getAscent(); this.labelWidth = fm.stringWidth( this.label ) + 1; this.mDim = new Dimension( this.labelWidth + ( this.hMargin * 2 ) + ( this.borderWidth * 2), this.fontAscent + this.fontDescent + ( this.vMargin * 2 ) + ( this.borderWidth * 2) ); this.pDim = new Dimension( this.mDim.width, this.mDim.height ); } public Dimension getPreferredSize() { return this.pDim; } public Dimension getMinimumSize() { return this.mDim; } public void addNotify() { super.addNotify(); if ( this.kludgeStyle ) { this.setStyle( this.styleToKludge ); } computeDimensions(); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.