jnlabel.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 591 行 · 第 1/2 页
JAVA
591 行
// this.setSelectedColors(Color.blue, Color.white);
}
public void internallyPaint(Graphics g) {
/* Super is not called because internallypaint() is redrawing based on this.x,this.y, instead of 0,0 */
// if(isOpaque())
{
g.setColor(_getInternalBGColor());
g.fillRect(0, 0, getBounds().width, getBounds().height);
}
paintLabel(g);
/* //g.clearRect(0,0,width,height);
g.setFont(font);
g.setColor( Color.green );
g.fillRect(0,0,width,height);
g.setColor( Color.red );
g.drawRect(0,0, 10,height-5);
g.drawRect((width-10),0, 10,height-5);
g.setColor( Color.blue );
g.drawRect( _visibleText_X, 0,
required_Width, _visibleText_Y-10 );
g.setColor( foregroundColor );
g.drawString( _visibleText, _visibleText_X, _visibleText_Y );
g.setColor( Color.darkGray );
g.drawString("iiiiiiiiii",5,10);
g.drawString("kkkkkkkkkk",5,20);
System.out.println( g.getFont().toString() );
*/
}
public void paintLabel(Graphics g) {
// g.setColor( Color.black );
g.setColor(_getInternalFGColor());
g.setFont(this.getFont());
// Image
if (null != labelImage) {
// g.drawImage( labelImage, 0,0, img_lab_width, img_lab_height, null);
Insets ins = imageInsets;
g.drawImage(labelImage, ins.left, ins.top, img_lab_width, img_lab_height, null);
}
// Text
int vt_y = _visibleText_Y - comp_insets.top - 2;
g.drawString(_visibleText,
_visibleText_X,
// _visibleText_Y + required_Height - INSETS_HEIGHT -2 );
vt_y);
/********* MouseOVer Effect **********/
if (isMouseOverEffectEnabled) {
// int gap = 2;
// int vth= _visibleText_Height ;
// g.drawRect(_visibleText_X - gap, vt_y + gap, _visibleText_Width + gap, _visibleText_Height + gap );
//- g.drawRect(_visibleText_X - 4, vt_y - vth +gap, _visibleText_Width + 6, _visibleText_Height + gap);
if (isMouseOver) {
g.setColor(Color.white);
g.drawLine(mouseOverX1, mouseOverY1, mouseOverX2 - 1, mouseOverY1);
g.drawLine(mouseOverX1, mouseOverY1, mouseOverX1, mouseOverY2 - 1);
g.setColor(Color.lightGray);
g.drawLine(mouseOverX1, mouseOverY2, mouseOverX2, mouseOverY2);
g.drawLine(mouseOverX2, mouseOverY1, mouseOverX2, mouseOverY2);
}
}
/*************************************/
// System.out.println(" +++++++++++ " +_visibleText+" x,y "+this.getX()+","+this.getY()+" JNLabel:paintLabel()");
/* Border */
if (drawBorderLine) {
g.setColor(Color.black);
g.drawRect(0, 0, getBounds().width, getBounds().height);
g.setColor(Color.white);
g.drawRect(1, 1, getBounds().width - 2, getBounds().height - 2);
// g.setColor(Color.blue);
// g.drawRect(_visibleText_X, _visibleText_Y, required_Width, required_Height);
/*int t = required_Width - (INSETS_WIDTH * 2);
g.drawRect(_visibleText_X, _visibleText_Y, t, required_Height);
g.setColor(Color.red);
g.drawRect( _visibleText_X-INSETS_WIDTH,
_visibleText_Y,
required_Width,
required_Height);
g.setColor(Color.black);
int twh = width - (INSETS_WIDTH * 2);
g.drawRect(_visibleText_X, _visibleText_Y, twh, height);*/
}
}
protected void processMouseEvent(JNodeMouseEvent event) {
if (event.getID() == JNodeMouseEvent.MOUSE_ENTERED) {
setSelected(true);
isMouseOver = true;
} else if (event.getID() == JNodeMouseEvent.MOUSE_EXITED) {
setSelected(false);
isMouseOver = false;
} else if (event.getID() == JNodeMouseEvent.MOUSE_PRESSED) {
setSelected(true);
// update(getGraphics());
} else if (event.getID() == JNodeMouseEvent.MOUSE_RELEASED) {
setSelected(false);
// update(getGraphics());
notifyListeners();
}
Graphics gfx = getGraphics().create();
gfx.translate(getAbsLocation().x, getAbsLocation().y);
update(gfx);
super.processMouseEvent(event);
}
public void recalculate() {
_calculate_RequiredSize();
_calculate_Text_And_Dimensions();
}
public void resize() {
}
public void setAlignment(int alignment) {
this.text_alignment = alignment;
_calculate_Text_And_Dimensions();
}
public void setFont(Font f) {
if (f.equals(super.getFont())) {
return;
}
super.setFont(f);
recalculate();
}
public void setImage(JNImage img) {
unselectedImage = img;
setImageDetails(img);
}
protected void setImageDetails(JNImage img) {
labelImage = img;
if (labelImage == null) {
return;
}
if (labelImage.getWidth() > this.getWidth()) {
img_lab_width = this.getWidth();
} else {
img_lab_width = labelImage.getWidth();
}
if (labelImage.getHeight() > this.getHeight()) {
img_lab_height = this.getHeight();
} else {
img_lab_height = labelImage.getHeight();
}
}
public void setImageInsets(Insets ins) {
imageInsets = ins;
}
private void setMouseOverDetails(int visualtextwidth, int visualtextheight) {
int gap = 2;
int vt_y = _visibleText_Y - comp_insets.top - 2;
//- g.drawRect(_visibleText_X - 4, vt_y - vth +gap, _visibleText_Width + 6, _visibleText_Height + gap);
int wid = visualtextwidth + 6;
int hei = visualtextheight + gap;
// ----
mouseOverX1 = _visibleText_X - 4;
mouseOverY1 = vt_y - visualtextheight + gap;
mouseOverX2 = mouseOverX1 + wid;
mouseOverY2 = mouseOverY1 + hei;
}
public void setMouseOverEffect(boolean b) {
isMouseOverEffectEnabled = b;
}
public void setSelected(boolean b) {
super.setSelected(b);
if (b) {
setImageDetails(selectedImage);
} else {
setImageDetails(unselectedImage);
}
}
public void setSelectedColors(Color bg, Color fg) {
mouseOverBackground = bg;
mouseOverForeground = fg;
}
public void setSelectedImage(JNImage img) {
selectedImage = img;
}
public void setSize(int w, int h) {
super.setSize(w, h);
recalculate();
}
public void setText(String s) {
if (null == s) {
s = "";
}
//if text is not same.
if (!s.equals(text)) {
text = s;
recalculate();
}
}
protected Dimension calculatePreferredSize() {
FontMetrics fm = getFontMetrics();
required_Width = fm.stringWidth(text);
required_Height = fm.getHeight();
if (this.isOpaque()) {
required_Width += (comp_insets.left + comp_insets.right);
required_Height += (comp_insets.top * comp_insets.bottom);
}
Dimension rs = new Dimension(required_Width, required_Height);
return rs;
}
public void paint(Graphics g) {
internallyPaint(g);
}
public void setEnableBorderLine(boolean b) {
drawBorderLine = b;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?