标签:style blog http java color 使用
你可能知道在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