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 + -
显示快捷键?