我正在构建一个文本语音应用程序。我正在使用splitpane来显示它。左窗格显示动态变化的语音到文本信息。右窗格显示一个“是/否”固定文本为每个句子说在左窗格在同一级别。
为了确保“Yes/No”显示在与左窗格中的句子完全相同的级别上,每当说出新句子时,我将在左窗格和右窗格中添加文本到相应的HBox(Splitpane_left_hbox(语音到文本句子)和Splitpane_right_hbox(“Yes/No”))。
左框和右框放置在left_Vbox和right_vbox中,用于语音到文本句子的垂直呈现。
我正在测量Splitpane_left_hbox(包含可变宽度语音到文本句子)的高度,以便为右侧的Hbox分配相同的高度。以便当出现新句子时,Splitpane_left_hbox和Splitpane_right_hbox上的文本都出现在新行的同一级别。
问题:
>
在将语音到文本的文本添加到Splitpane_left_hbox后,如何获得Splitpane_left_hbox的最终高度?
是否有更有效的方法使这些文本在两个窗格上显示在同一级别?
FXML文件:
<SplitPane fx:id="split_pane" dividerPositions="0.49613899613899615" prefHeight="497.0" prefWidth="1040.0">
<items>
<ScrollPane prefViewportHeight="341.0" prefViewportWidth="512.0">
<content>
<VBox fx:id="split_pane_1_Vbox" prefHeight="494.0" prefWidth="513.0">
<children>
<HBox fx:id="split_pane_1_hbox" fillHeight="false">
<children>
<Text fx:id="text_1" />
</children>
</HBox>
</children>
</VBox>
</content>
</ScrollPane>
<ScrollPane prefViewportHeight="341.0" prefViewportWidth="520.0">
<content>
<VBox fx:id="split_pane_2_Vbox" prefHeight="496.0" prefWidth="523.0">
<children>
<HBox fx:id="split_pane_2_hbox" prefHeight="300.0" prefWidth="200.0" />
<children>
<Text fx:id="text_2" />
</children>
</VBox>
</content>
</ScrollPane>
</items>
</SplitPane>
void addFinalText(String sentence) {
Text text_1 = new Text(sentence.trim());
text_1.setFont(Font.font(null, FontWeight.MEDIUM, textSize));
double[] dividerPositions = split_pane.getDividerPositions();
double split_pane_width = split_pane.getPrefWidth();
double single_pane_width = dividerPositions[0] * split_pane_width;
text_1.setWrappingWidth(single_pane_width);
Text text_2 = new Text();
text_2.setFont(Font.font(null, FontWeight.MEDIUM, textSize));
Text text = new Text();
text.setText(sentence.trim() + " ");
text.setFont(Font.font(null, FontWeight.MEDIUM, textSize));
if (sentence.contains("hi")) {
text_2.setText("Yes" + "\n");
text_2.setFill(Color.RED);
text_1.setFill(Color.RED);
}
else {
text_2.setText("No" + "\n");
}
HBox left_hbox = new HBox();
left_hbox.getChildren().add(text_1);
double leftHboxHeight = left_hbox.getHeight();
HBox right_hbox = new HBox();
right_hbox.setHeight(leftHboxHeight);
right_hbox.getChildren().add(text_2);
right_hbox.getChildren().add(text_2);
left_hbox.getChildren().add(text_1);
}
App截图:
我是JavaFX新手。提前道谢。`
在下一个布局通过之前不定位节点。此布局传递发生在方法返回后的某个时间。最好为Yes/No文本使用窗格
并将这些节点的Layouty
属性绑定到Layouty
属性。只需确保添加到右侧的文本的垂直对齐是正确的。
@Override
public void start(Stage primaryStage) {
VBox left = new VBox();
Pane right = new Pane();
Button button = new Button("Add");
HBox hbox = new HBox(left, right, button);
button.setOnAction(new EventHandler<ActionEvent>() {
private int count = 1;
private final StringBuilder builder = new StringBuilder("1");
@Override
public void handle(ActionEvent event) {
Text text = new Text(builder.toString());
Text yesNo = new Text(count % 2 == 0 ? "Yes" : "No");
yesNo.setTextOrigin(VPos.TOP);
HBox container = new HBox(text);
left.getChildren().add(container);
left.getChildren().add(text);
right.getChildren().add(yesNo);
yesNo.layoutYProperty().bind(container.layoutYProperty());
count++;
builder.append('\n');
for (int i = 0; i < count; i++) {
builder.append('1');
}
}
});
Scene scene = new Scene(hbox, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
请注意,这不会同步ScrollPane
的滚动。我建议使用GridPane
并将文本添加到相同的ScrollPane
中。
在过去的一个小时里,我一直在尝试让Chart.js在同一页上呈现两个折线图。我已经确保我的画布元素ID是唯一的,我的变量也是唯一的。 这是在使用chart.js v2.8.0 下面是inspect元素的错误日志。 在
我在linux服务器上的一个备份中遇到了一个问题,它以某种方式将文件的所有文件夹向下移动了一个级别,放入了一个同名的新文件夹。我想将所有文件返回到其原始位置。许多文件的名称中有空格,使事情复杂化。 原始目录结构: 目录结构不正确: 请注意,我不希望子文件夹中的文件移动到文件夹1中,但我确实希望子文件夹本身向上移动一级。 我尝试了一些类似的命令,基于这里一些相关的线程,但没有成功,而是尝试将文件移动
我是ExtJS新手。 我在同一页上有两个网格。第一个网格有3列。只有第二个。问题是,当渲染第二个网格时,它会覆盖第一个网格的属性。 例如,当我试图编辑第一个网格中的行时,它需要第二个网格中的行的宽度。
我还希望com.mypack的级别“trace”与“info”的行为方式相同。到目前为止,我还没有取得任何成功。我需要像这样的东西 感谢你的帮助。
问题内容: 我想知道如果在同一个对象上同步两次,在Java中是否会出现任何奇怪的行为? 场景如下 两种方法都使用该对象并对其进行同步。当第一个方法调用第二个方法时,它会被锁定而停止吗? 我不这么认为,因为它是同一个线程,但是我不确定是否可能会出现其他任何奇怪的结果。 问题答案: 同步块使用 可重入 锁,这意味着如果线程已经持有该锁,则它可以重新获取它而不会出现问题。因此,您的代码将按预期工作。 请
有没有办法只进行一次xslt转换并将输出呈现为pdf、png、svg文件? 在上面的例子中,为了生成PDF然后生成PNG,我必须创建一个具有不同mime类型的新Fop实例,然后再次调用xslfoTransformer.transform()。 这意味着我将有两次转换,但我想知道是否有一种方法可以运行一次转换,然后将输出渲染为不同的格式?(自定义渲染器?) 或者有什么建议可以加快渲染速度,因为我还需