我正在开发一个应用程序,使用户能够绘制图形,即边和节点。作为节点,我目前正在使用普通的JavaFX标签元素。在绘制边时,我需要考虑标签的边界,然而,标签的宽度和高度似乎只有在“绘制”它之后才初始化。E、 例如,启动应用程序时,标签边界的宽度/高度为0,但如果用户重新定位标签,则宽度/高度是正确的。
是否有可能强制JavaFX绘制当前元素?代码相当复杂,但下面给出了我想做的事情:
stackpane = new StackPane();
text = new Label("Test");
text.setStyle("-fx-border-color:black; -fx-padding:3px;");
stackpane.getChildren().addAll(text);
...
// is it possible to force JavaFX to draw the text here?
...
// some calculations with the bounds of the label
Node node = getLabel();
Bounds bounds = node.getBoundsInParent();
double height = bounds.getHeight();
double width = bounds.getWidth();
我还尝试将文本包装成矩形,然后手动设置矩形的宽度/高度。这是可行的,但节点具有不同长度的标签,因此手动设置并不总是合适的。
您可以尝试将您的逻辑绑定到node.boundsIn家长属性()更改
public class SmartBorder extends Application {
@Override
public void start(Stage primaryStage) {
final Label txt = new Label("Example");
txt.relocate(100, 100);
Pane root = new Pane();
final Rectangle border = new Rectangle();
border.setFill(Color.TRANSPARENT);
border.setStroke(Color.RED);
// here we autoupdate border
txt.boundsInParentProperty().addListener(new ChangeListener<Bounds>() {
@Override
public void changed(ObservableValue<? extends Bounds> ov, Bounds old, Bounds b) {
border.setX(b.getMinX() - 1);
border.setY(b.getMinY() - 1);
border.setWidth(b.getWidth()+2);
border.setHeight(b.getHeight()+2);
}
});
root.getChildren().addAll(txt, border);
// click to see automatic border reaction
root.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
txt.relocate(Math.random()*200, Math.random()*200);
txt.setText(Math.random() + "");
}
});
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
}
问题内容: 你可以通过执行以下操作来设置ArrayList的初始大小: 但是,你做不到 因为它会导致超出范围的异常。 如果无法访问分配的空间,设置初始大小有什么用? add函数的定义是,所以我不添加索引10。 问题答案: 你将数组列表的大小与其容量混淆了: 的大小是在列表中的元素的数目; 的容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。 呼叫时,你是在设置列表的初始容量,而不是列表的大小
我使用javafx绘制条形图和饼图。我需要: 更改条形图中x轴标签的字体大小 更改条形图标题的字体大小 更改饼图标题的字体大小 我正在使用的条形图 它仅更改xaxis上文本(单位)的字体大小,但不更改x轴标签 同样地,我正在使用 更改饼图中馅饼的标签。它确实会改变饼图标题的大小,但比例不一样。
每当创建一个新实例时,我希望用字符串值填充构造函数中的数组。当我试图创建一个实例时,我的代码中出现了以下错误。 主类 活动课
问题内容: 我试图从一个简单的ArrayList的内容填充ListView。这是我的 Controller.java文件: 这是我的Style.fxml文件: 该程序运行,但是我输入的歌曲没有出现在ListView中(并且Song类确实具有toString方法)。 我能做什么? 问题答案: 问题是没有将控制器的初始化为预期问题的质询者。 Java 8中FXMLLoader的操作有点奇怪。 如果您在
主要内容:创建标签,标签内容,标签字体,包装文本,应用效果,标签鼠标事件,更新标签JavaFX API的包中的类可用于显示一个文本元素。 我们可以包装文本元素以适应特定空间,添加图形图像或使用JavaFX 控件应用视觉效果。 以下代码显示如何使用显示文本。 创建标签 JavaFX API提供了类的三个构造函数来创建标签。 标签内容 创建标签后,我们可以使用类中的以下方法添加文本和图形内容。 - 设置标签的文本标题 - 设置图形图标 方法设置文本和图标之间的间距。方法设置标签文本
我刚开始使用JavaFX,问题是,在更改场景后,并非所有组件都被显示。例如,我有一个GridPane,它将被添加到边框中心,一个标签将被添加到边框底部。但是在我更改场景后,这个标签不会显示,只有在调整大小后才有效。 以下是一个简单的最小、完整和可验证的示例: