gpt4 book ai didi

JavaFX,如何防止在ScrollPane焦点期间调整标签文本大小?

转载 作者:行者123 更新时间:2023-11-30 05:53:04 26 4
gpt4 key购买 nike

如何阻止 ScrollPane 焦点调整标签文本的大小?

我正在复制 this car loan calculator在 JavaFX 中。

Almost everything works as intended

Until the ScrollPane gets focus ,右侧的标题和文本被调整大小

A brief description of the layout

所以,问题是当 ScrollPane 获得焦点时,我的标签文本正在调整大小。我尝试通过调整 ScrollPane 的属性、ScrollPane 中包含的布局以及标签本身来解决此问题。我还搜了一下以前是否有人问过类似的问题。我还没有发现任何东西。

谢谢

编辑:

添加了一些代码,我尝试使其尽可能少。如果您将焦点放在 TextField 上,则所有标签文本的大小都会按预期调整。如果您将焦点放在 ScrollPane 上,则大的蓝色文本会缩小以匹配较小的黑色文本。在此示例中显然不需要滚动,但它仍然显示了我的项目中确实需要滚动的问题。

package application;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.stage.Stage;

public class Main extends Application
{
public static void main(String[] args)
{
launch(args);
}

@Override
public void start(Stage primaryStage)
{
Stage stage = primaryStage;

HBox myHBox = new HBox();

Label smallerText = new Label("this is small\ntext");
smallerText.setStyle("-fx-font-weight: bold");
smallerText.setTextFill(Color.web("#000000"));
smallerText.setFont(Font.font("Leelawadee UI", FontPosture.REGULAR, 12));

Label biggerText = new Label("this is big\ntext");
biggerText.setStyle("-fx-font-weight: bold");
biggerText.setTextFill(Color.web("#005FBA"));
biggerText.setFont(Font.font("Leelawadee UI", FontPosture.REGULAR, 24));

TextField myTextField = new TextField();

myHBox.getChildren().addAll(smallerText, biggerText);

VBox myVBox = new VBox();
myVBox.getChildren().addAll(myHBox, myTextField);

ScrollPane myScrollPane = new ScrollPane(myVBox);
myScrollPane.setHbarPolicy(ScrollBarPolicy.NEVER);
myScrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);

Scene scene = new Scene(myScrollPane);
stage.setScene(scene);
stage.show();
}

}

再次编辑:

问题已解决。谢谢你! :)

最佳答案

正如怀疑的那样,默认 CSS 文件实现会产生一些影响。您绝对应该就此提出 JIRA 请求。

但暂时您可以通过将所有样式声明移至 css 文件来解决该问题。一切都按预期进行。

以下是我所做的。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class FontResizeIssueOnFocus extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
Stage stage = primaryStage;
HBox myHBox = new HBox();

Label smallerText = new Label("this is small\ntext");
smallerText.getStyleClass().add("smaller-text");

Label biggerText = new Label("this is big\ntext");
biggerText.getStyleClass().add("bigger-text");

TextField myTextField = new TextField();
myHBox.getChildren().addAll(smallerText, biggerText);

VBox myVBox = new VBox();
myVBox.getChildren().addAll(myHBox, myTextField);

ScrollPane myScrollPane = new ScrollPane(myVBox);
myScrollPane.setHbarPolicy(ScrollBarPolicy.NEVER);
myScrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);

Scene scene = new Scene(myScrollPane);
scene.getStylesheets().add(getClass().getResource("scrollpanefontissue.css").toString());
stage.setScene(scene);
stage.show();
}
}

在 css 文件中...

.smaller-text{
-fx-font-weight:bold;
-fx-text-fill:#000000;
-fx-font-family: "Leelawadee UI";
-fx-font-size:12px;
}
.bigger-text{
-fx-font-weight:bold;
-fx-text-fill:#005FBA;
-fx-font-family: "Leelawadee UI";
-fx-font-size:24px;
}

或者,如果您对 css 文件实现不感兴趣,您可以使用内联 css 进行声明。这也将解决您的问题。

Label smallerText = new Label("this is small\ntext");
smallerText.setStyle("-fx-font-weight: bold;-fx-text-fill:#000000;-fx-font-family:\"Leelawadee UI\";-fx-font-size:12px;");

Label biggerText = new Label("this is big\ntext");
biggerText.setStyle("-fx-font-weight: bold;-fx-text-fill:#005FBA;-fx-font-family:\"Leelawadee UI\";-fx-font-size:24px;");

关于JavaFX,如何防止在ScrollPane焦点期间调整标签文本大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com