码迷,mamicode.com
首页 > 编程语言 > 详细

JavaFX2 -- 控件 -- TwoColorLabel -- 可以显示两种颜色的Label

时间:2014-07-23 14:53:36      阅读:573      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   使用   

TwoColorLabel -- 可以显示两种颜色的Label

你可能知道在Swing中通过为一个JLabel设置HTML文本,即可显示复杂多样的文字效果。但是很遗憾,在JavaFX2+中,Label不具备这个特性。在JavaFX2版本中,HTMLEditor和WebView可以解析HTML文本,但是使用这两个组件来显示很小的文本,是个累赘。在JavaFX8中,新增了一个TextFlow容器,可以向其中添加不同效果的Text,该容器会自动的对Text进行换行布局等,以及显示不同效果的文本。

 

本将介绍一个为在JavaFX2版本中使用的显示两种颜色文本控件(局限性很大,只能分前后显示两种颜色,可以自动换行)

 

代码如下:

import javafx.event.EventHandler;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;

/**
 * 可以显示两种颜色的Label
 *
 * @since 2014-7-23 10:08:28
 * @author Alan
 */
public class TwoColorLabel extends TextArea {

    private static final Color DEFAULT_FIRST_COLOR = Color.RED;
    private static final Color DEFAULT_SECOND_COLOR = Color.rgb(76, 120, 174);

    public TwoColorLabel(final String firstText, final String secondText) {
        this(firstText, secondText, DEFAULT_FIRST_COLOR, DEFAULT_SECOND_COLOR);
    }

    public TwoColorLabel(final String firstText, final String secondText, final Color firstColor, final Color secondColor) {
        setText(firstText + secondText);
        setEditable(false);
        addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent t) {
                t.consume();
            }
        });
        setWrapText(true);
        setStyle("-fx-text-fill:rgb(" + (int) (firstColor.getRed() * 255) + "," + (int) (firstColor.getGreen() * 255) + "," + (int) (firstColor.getBlue() * 255) + ");"
                + "-fx-highlight-fill: white;\n"
                + "-fx-highlight-text-fill:  rgb(" + (int) (secondColor.getRed() * 255) + "," + (int) (secondColor.getGreen() * 255) + "," + (int) (secondColor.getBlue() * 255) + ");"
                + "-fx-background-color: transparent;");
        selectRange(firstText.length(), getText().length());
    }
}

 

JavaFX2 -- 控件 -- TwoColorLabel -- 可以显示两种颜色的Label,布布扣,bubuko.com

JavaFX2 -- 控件 -- TwoColorLabel -- 可以显示两种颜色的Label

标签:style   blog   http   java   color   使用   

原文地址:http://www.cnblogs.com/alanzyy/p/3862658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!