小编Jon*_*cka的帖子

Node.snapshot(null,null)更改Scene的大小

我有Scene它设置为Scene我primaryStage说的-除其他节点-包含VBoxTableView和一些按钮.当我使用表中的行拍摄快照时TableRow.snapshot(null, null),Scene会更改其大小.宽度改变大约10个像素,而高度改变大约40个 - 有时大于600(!) - 像素.

发生这种情况是因为Node.snapshot(null, null)调用 Scene.doCSSLayoutSyncForSnapshot(Node node)似乎获得了大小中所有节点的首选大小,并使用它重新计算大小.这会以某种方式返回错误的值,因为我的节点只指定了首选大小,并且在调用此方法之前看起来很棒.有什么方法可以防止这种情况吗?

大小更改是一个问题,但主要阶段不会更改Scene其包含的大小也是一个问题.

我试图创建一个MCVE来重现这个问题,但经过几天尝试这样做之后,我仍然无法重现这个问题.原始程序包含大约2000行代码,我不想在这里发布.

为什么Scene.doCSSLayoutSyncForSnapshot(Node node)在首先正确布局时会影响我的布局?在调用此方法之前,我可以以某种方式确保布局已正确同步,以确保它不会更改任何内容吗?

java size javafx snapshot

9
推荐指数
1
解决办法
534
查看次数

按"x"时javafx.scene.control.Dialog <R>不会关闭

如果我只创建一个从中延伸的空类javafx.scene.control.Dialog<R>,当我按下右上角的"x"按钮时它将不会关闭.

我该如何实现这种行为?API似乎告诉我,我需要实现一个关闭按钮.但在我的情况下,我不想要一个关闭按钮,我只想用x按钮关闭窗口或按ESC.这可能吗?

java dialog javafx

8
推荐指数
3
解决办法
1万
查看次数

添加样式后如何重置回默认css?

基本上我通过添加这样的样式类来改变javafx中文本字段的css:

textfield.getStyleClass().add("textfieldstyle");
Run Code Online (Sandbox Code Playgroud)

但后来我希望能够将它恢复到原来的样子.但由于在这种情况下的原始外观是JavaFX的默认外观,我找不到文本字段的原始布局.我在这里找到了textfieldskin属性,但它是丛林,我找不到关于-fx-control-inner-background,-fx-text-box-border和-fx-focus-color的颜色,是我想知道的.

我已经尝试textfield.getStyleClass().remove("textfieldstyle");并认为这确实删除了新的CSS,但它不再适用旧的css.

java javafx

7
推荐指数
3
解决办法
1万
查看次数

在ComboBox中为FilteredList设置谓词会影响输入

我已经实现了一个ComboBox列表被其中的输入过滤的位置ComboBox TextField.它可以正常工作,因为你可能期望这种控件的过滤器工作.列表中显示列表中以输入文本开头的每个项目.

我只有一个小问题.如果我从列表中选择一个项目,然后尝试删除文本字段中的最后一个字符,则没有任何反应.如果我从列表中选择一个项目,然后尝试删除除最后一个之外的任何其他字符,则会删除整个字符串.只有这是我做的第一件事,才会出现这两个问题ComboBox.如果我先在组合框中写一些东西,或者我第二次选择一个项目,则不会出现所描述的任何问题.

对我来说真正奇怪的是,这些问题似乎是由谓词设置引起的(如果我注释掉调用setPredicate,一切正常).这很奇怪,因为我认为这应该只影响为谓词设置的列表.它不应该影响剩下的ComboBox.

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.StringConverter;

public class TestInputFilter extends Application {
    public void start(Stage stage) {
        VBox root = new VBox();

        ComboBox<ComboBoxItem> cb = new ComboBox<ComboBoxItem>();
        cb.setEditable(true);

        cb.setConverter(new StringConverter<ComboBoxItem>() {

            @Override
            // To convert the ComboBoxItem to a String we just call its
            // toString() method.
            public String toString(ComboBoxItem …
Run Code Online (Sandbox Code Playgroud)

java combobox javafx predicate filter

5
推荐指数
1
解决办法
1621
查看次数

如何调整包含 svg 图像的按钮的大小

我想在按钮内放置一个 svg 图像,然后我希望能够将按钮调整为任何大小。

首先,这是我在按钮内加载和放置 svg 图像的方式:

SVGPath svg = new SVGPath();
        svg.setContent("M87.5,50.002C87.5,29.293,70.712,12.5,50,12.5c-20.712,0-37.5,16.793-37.5,37.502C12.5,70.712,29.288,87.5,50,87.5
        c6.668,0,12.918-1.756,18.342-4.809c0.61-0.22,1.049-0.799,1.049-1.486c0-0.622-0.361-1.153-0.882-1.413l0.003-0.004l-6.529-4.002
        L61.98,75.79c-0.274-0.227-0.621-0.369-1.005-0.369c-0.238,0-0.461,0.056-0.663,0.149l-0.014-0.012
        C57.115,76.847,53.64,77.561,50,77.561c-15.199,0-27.56-12.362-27.56-27.559c0-15.195,12.362-27.562,27.56-27.562
        c14.322,0,26.121,10.984,27.434,24.967C77.428,57.419,73.059,63,69.631,63c-1.847,0-3.254-1.23-3.254-3.957
        c0-0.527,0.176-1.672,0.264-2.111l4.163-19.918l-0.018,0c0.012-0.071,0.042-0.136,0.042-0.21c0-0.734-0.596-1.33-1.33-1.33h-7.23
        c-0.657,0-1.178,0.485-1.286,1.112l-0.025-0.001l-0.737,3.549c-1.847-3.342-5.629-5.893-10.994-5.893
        c-10.202,0-19.877,9.764-19.877,21.549c0,8.531,5.101,14.775,13.632,14.775c4.75,0,9.587-2.727,12.665-7.035l0.088,0.527
        c0.615,3.342,9.843,7.576,15.121,7.576c7.651,0,16.617-5.156,16.617-19.932l-0.022-0.009C87.477,51.13,87.5,50.569,87.5,50.002z
         M56.615,56.844c-1.935,2.727-5.101,5.805-9.763,5.805c-4.486,0-7.212-3.166-7.212-7.738c0-6.422,5.013-12.754,12.049-12.754
        c3.958,0,6.245,2.551,7.124,4.486L56.615,56.844z");

Button button = new Button();
        button.setGraphic(svg);
Run Code Online (Sandbox Code Playgroud)

我尝试将 SVGPath 放在 Group 对象中,然后我缩放了该 Group,如下所示:

Group graphics = new Group();
graphics.getChildren().add(svg);
graphics.getTransforms().add(new Scale(0.2, 0.2, 0 , 10));

Button button = new Button();
button.setGraphic(graphics);
Run Code Online (Sandbox Code Playgroud)

这确实改变了 svg 图像的大小。问题是按钮的大小不会相应地改变。它的大小与图像从未重新缩放过的大小相同。我是否设置了按钮的最大大小并不重要。我只能让按钮变大,但不能变小。

在 JavaFx 中使用 SVG 图像的文档似乎非常有限,所以如果有人能帮助我,我将不胜感激。

更新: @ItachiUchiha 指出我可以使用setScaleX(..) andsetScaleY(..)重新缩放按钮,并且里面的 svg 图像将随之重新缩放。但是,这样做似乎不会改变按钮的大小属性。这意味着包含按钮的窗格仍将占据与按钮未重新缩放相同的空间。在窗格上设置最大尺寸也无济于事。此外,setScaleY 和 X 方法重新缩放所有按钮,包括按钮的边框。这为按钮提供了不同于包含纯文本的按钮的外观。我的窗格将包含带有 svg 内容的按钮和带有纯文本内容的按钮,并且除了它们的内容外,它们看起来都一样。

更新 2: @ItachiUchiha 编辑后的回复使一切变得清晰。标记为答案。

java svg resize javafx

3
推荐指数
1
解决办法
4128
查看次数

MIME 类型“text/plain”显示所有 HTML 代码

我正在做一个作业,我应该用 MIME 类型“text/plain”显示一些文本。

<!DOCTYPE html>
<head lang="sv">
    <meta charset=utf-8" />
    <title>A Title</title>
</head>
<body>
    <?php
    header("Content-Type: text/plain");
    echo("Hello");
    ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,会显示“hello”。但问题是除了 PHP 代码之外的其他所有内容也都显示了。这意味着结果是打印出所有 HTML 代码以及我使用 echo 方法打印的文本的页面。

我真的不知道为什么我应该使用 MIME 类型“text/plain”显示文本,但作业是这么说的。而且我对 PHP 还很陌生,所以这个问题可能很简单。但至少我找不到其他人遇到同样的问题。

所以我想要的是只显示 echo 方法中的文本,并且它应该具有 MIME 类型“text/plain”。这可能吗?

php mime-types

1
推荐指数
1
解决办法
4705
查看次数

rand()没有给我一个随机数(即使使用srand())

好吧,我开始失去理智.我想做的只是随机的0到410之间的数字,根据这个页面,我的代码应该这样做.因为我想要一个随机数而不是伪随机数,所以我也使用srand(),例如这个线程告诉我这样做.但这不起作用.我得到的只是一个数字,取决于我上次执行以来的时间.如果我尽可能快地再次执行它,那么数字通常比最后一个数字高6个数字,如果我等待更长时间,它会更高,等等.当它达到410时,它会回到0并重新开始.我错过了什么?

编辑:哦,如果我删除该srand(time(NULL));行,我每次运行程序时都得到相同的数字(41).这甚至不是伪随机的,这只是一个静态数字.只是从我上面链接的文章复制第一行代码仍然给我41号.我是"23号"续集中的明星,还是我错过了什么?

int main(void) {

    srand(time(NULL));
    int number = rand() % 410;

    std::cout << number << std::endl;

    system("pause");

}
Run Code Online (Sandbox Code Playgroud)

c++ random srand

1
推荐指数
1
解决办法
2512
查看次数

标签 统计

java ×5

javafx ×5

c++ ×1

combobox ×1

dialog ×1

filter ×1

mime-types ×1

php ×1

predicate ×1

random ×1

resize ×1

size ×1

snapshot ×1

srand ×1

svg ×1