嗨,我正在尝试显示一个文本对象和一个控制文本字体大小的滑块。使用JavaFX属性值观察滑块值的变化,然后根据滑块值更新文本大小。我错过了什么吗?
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.text.Text;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
public class TextSlider extends VBox
{
private Text text;
private Slider slider;
private VBox vbox;
private Font font;
private double initVal = 20;
public TextSlider()
{
text = new Text("Amsterdam");
slider = new Slider(0,150,100);
text.setFont(new Font(initVal));
// slider.setShowTickMarks(true);
//slider.setPadding(new Insets(10,10,10,10));
//text.fontProperty();
text.textProperty().bind(slider.valueProperty());
vbox = new VBox(text,slider);
vbox.setAlignment(Pos.CENTER);
vbox.getChildren().addAll(vbox);
}
}
3条答案
按热度按时间sd2nnvve1#
你不能直接绑定字体大小,但是你可以使用
text.styleProperty()
,style属性可以让你像css样式一样改变外观,你甚至可以把它绑定到其他属性。这将在每次滑块的value属性更改时更新文本节点的style属性。如果滑块值更改为20,则样式将设置为
-fx-font-size: 20
。另一个选择是使用一个更改监听器,并在更改的事件上设置一个新字体:
Java 8+:(代码同上)
omjgkv6w2#
注意,问题中的代码结构是破坏性的,
TextSlider
类是VBox
的子类,但是没有元素被添加到TextSlider
示例中,而是创建了一个新的VBox
并添加了内容;但是,由于无法访问新VBox
,因此无法使用TextSlider
类实际查看任何内容。其他答案显示了将字体大小绑定到滑块的其他方式;imo最直接的方法是使用自定义绑定来绑定文本的
fontProperty()
。下面是使用此绑定的工作
TextSlider
类:典型的使用情形如下所示:
hgtggwj03#
19岁以上