我有一个普通的JFrame(应用程序的一部分)和第二个JavaFX窗口(我不能在JavaFX阶段使用JFrame).问题是JavaFX窗口应始终位于所有其他窗口之上.
我不知道应该如何解决这个问题!有任何想法吗?
是否可以在JavaFX 2.2中的ImageView中渲染缩放图像而不应用任何平滑?我正在使用setSmooth(false)将50x50图像渲染到200x200 ImageView中,因此源图像中的每个像素都应映射到屏幕上的4x4正方形.
但是,生成的渲染仍然可以平滑所有16个目标像素上的源像素.有没有人知道如何在不手动将每个像素复制到新图像的情况下执行此操作?
看起来在JavaFX 8中为面板设置背景颜色存在问题.
我一直在尝试以下,但没有一个设置适当的背景颜色.
VBox panel = new VBox();
panel.setAlignment(Pos.TOP_LEFT);
// None of the below work
panel.setStyle("-fx-background-color: #FFFFFF;");
panel.setBackground(new Background(new BackgroundFill(Color.WHITE, CornerRadii.EMPTY, Insets.EMPTY)));
Run Code Online (Sandbox Code Playgroud)
我设置背景颜色的方式有问题吗?这曾经用于早期版本的JavaFX 2.2.
谢谢.
有没有办法填充JavaFX ComboBox或ChoiceBox枚举的所有枚举?
这是我尝试过的:
public class Test {
public enum Status {
ENABLED("enabled"),
DISABLED("disabled"),
UNDEFINED("undefined");
private String label;
Status(String label) {
this.label = label;
}
public String toString() {
return label;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在另一堂课中,我试图填写一个ComboBox:
ComboBox<Test.Status> cbxStatus = new ComboBox<>();
cbxStatus.setItems(Test.Status.values());
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误: incompatible types: Status[] cannot be converted to ObservableList<Status>
我显然遇到了同样的问题ChoiceBox.
我在IntelliJ IDEA中调试时出现问题,它在javafx应用程序中的侦听器中的断点处以调试模式挂起.我试图增加堆空间,但它没有帮助.也许有人也有这样的问题,拜托,建议我该怎么做.
我想使用JavaFX为Raspberry Pi编写程序,但我的Raspberry Pi上的Java SDK 8似乎没有JavaFX支持.
所以我的问题是JavaFX是否受支持Raspberry Pi 2/3?如果是,为什么JDK在平台上没有JavaFX库?有没有办法支持它或者值得在Raspberry PI上编写JavaFX应用程序?
正在使用的Java版本是1.8.0_65.
我正在尝试解决jdk中的这个错误:http://bugs.java.com/bugdatabase/view_bug.do? video_id = 8088624
public class Blubb extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Button btn = new Button("Click");
btn.setTooltip(new Tooltip("Blubb"));
Scene scene = new Scene(new BorderPane(btn), 320, 240);
primaryStage.setScene(scene);
primaryStage.show();
Stage secondStage = new Stage();
secondStage.setScene(new Scene(new BorderPane(new Button("Click")), 320, 240));
//secondStage.initOwner(primaryStage);
secondStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
如果主舞台上的按钮悬停,它将出现在第二阶段的前面.我发现调用initOwner()一个舞台将消除这种行为.
现在我的问题是:我有多个"弹出窗口",它们有一个共同的所有者(主要阶段).将鼠标悬停在主阶段上的控件上后,在initOwner()解决方法后不会导致任何意外行为.然而,如果您将鼠标悬停在弹出窗口中的控件上而另一个弹出窗口处于焦点位置,则悬停的弹出窗口将会隐藏焦点.
有没有办法可以解决这个错误,不仅是初级阶段,还有弹出窗口?
更新:结果我的解决方法有不良副作用.舞台状态的Javadocs如下:
舞台将始终位于其父窗口的顶部.
另外,什么是一种解决方法,使弹出窗口不"总是在顶部"和最小化?
我想要实现的实际上是浏览器的取消按钮,但使用JavaFX的webview.这是我到目前为止的代码:
Worker<Void> loadWorker = webView.getEngine().getLoadWorker();
if (loadWorker != null) {
Platform.runLater(() -> loadWorker.cancel());
}
Run Code Online (Sandbox Code Playgroud)
但它有时会起作用,有时却不起作用.
取消加载页面的webview/webengine任务的正确方法是什么?
我有一个带有几个UI元素的自定义对话框。一些TextField用于数字输入。当按下逃逸键并且焦点位于任何数字文本字段上时,此对话框不会关闭。当焦点位于没有此自定义TextFormatter的其他TextField上时,该对话框可以正常关闭。
这是简化的代码:
package application;
import java.text.DecimalFormat;
import java.text.ParsePosition;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
TextField name = new TextField();
HBox hb1 = new HBox();
hb1.getChildren().addAll(new Label("Name: "), name);
TextField id = new TextField();
id.setTextFormatter(getNumberFormatter()); // numbers only
HBox hb2 = new HBox();
hb2.getChildren().addAll(new Label("ID: "), id);
VBox vbox = new …Run Code Online (Sandbox Code Playgroud)