首页 > 代码库 > JavaFX2 -- 控件 -- TwoColorLabel -- 可以显示两种颜色的Label
JavaFX2 -- 控件 -- TwoColorLabel -- 可以显示两种颜色的Label
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()); }}
复制去Google翻译翻译结果
TwoColorLabel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。