【问题标题】:JavaFX Alert truncates the message? [duplicate]JavaFX 警报截断消息? [复制]
【发布时间】:2015-10-24 13:19:52
【问题描述】:

我注意到,如果我尝试显示带有长消息的 Alert,它往往会被截断(在单词边界处)。

例子:

import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.stage.Stage;

public class AlertTest extends Application {
    @Override
    public void start(final Stage primaryStage) throws Exception {
        new Alert(AlertType.INFORMATION, "this is a pretty long message that "
                + "should not be truncated in this alert window, no matter "
                + "how long it is").showAndWait();
    }

    public static void main(final String... args) {
        launch(args);
    }
}

这只会在此处显示“这是一条很长的消息,不应被截断”。
截断的原因是什么,如何避免?

我在 Linux 中使用 Oracle JDK 1.8.0_60。

【问题讨论】:

    标签: java javafx javafx-8


    【解决方案1】:

    我认为这只是 Windows 和 Linux 的问题。它不会发生在 MacOS 上。不过,我认为这会在所有平台上为您解决问题。

    Alert alert = new Alert(AlertType.INFORMATION);
    alert.setContentText("this is a pretty long message that "
                    + "should not be truncated in this alert window, no matter "
                    + "how long it is");
    alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
    alert.showAndWait();
    

    【讨论】:

    • 我现在正在重新审视这个,并发现截断的发生是因为它没有为内容文本分配足够的高度,所以它没有空间可以换行。我找不到解决高度问题的方法,但后来我再次看到你的答案,发现它工作得很好,没有使用自定义内容节点,而只是使用内置内容标签(我更喜欢)。作为记录,看起来我仍然需要设置内容,例如如果我想避免换行(并使其调整宽度以适应内容),则使用新标签 - 只是一个可用的不同选项。
    【解决方案2】:

    试一试

    Alert alert = new Alert(AlertType.INFORMATION);
    alert.getDialogPane().setContent( new Text("this is a pretty long message that "
                    + "should not be truncated in this alert window, no matter "
                    + "how long it is"));
    alert.showAndWait();
    

    【讨论】:

    • 谢谢,但它使窗口非常宽以适合单行的文本,而无需换行。我发现我可以通过在 Text 对象上调用 setWrappingWidth 来解决这个问题。
    • @aditsu,正确,但您的问题是关于避免截断而不是包装;)
    • 还有一些其他的格式问题,但确实,setContent 是关键,内容节点可以设置为任何内容并随意调整。如果您能解释为什么它在原始版本中被截断,那就太好了;似乎它使用了一个包装标签,但不知何故对话框将它裁剪到第一行?
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    相关资源
    最近更新 更多