标签: javafx

将 JavaFX 桌面应用程序转换为 Web 应用程序

我有一个基于 Maven JavaFX 的桌面应用程序,我必须在 eclipse 或任何其他 IDE 中将它转换为动态 Web 应用程序(我使用的是 Eclipse Neon-Java EE)。我已经尝试过 Project Facets(右键单击项目名称 --> Properties --> Project Facets --> dynamic web app)我已经生成了 Web 内容文件(Meta-INF 和 WEB-INF)。在项目文件夹中仍然出现字母“M”而不是 golobe 图标。当我尝试在 Tomcat 中运行它时,它显示 404 错误。

我的项目是这样的:

项目图片

任何人都可以帮助我将此 JavaFX 项目转换为在浏览器上运行吗?

java eclipse javafx maven web

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

onDragOver 不会发生(在 JavaFX 中)

为什么onDragOver在下面的例子中没有发生事件?

如何实现最简单的拖动行为,即没有剪贴板的东西?

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.*;
import javafx.scene.Scene;
import javafx.scene.input.DragEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.Pane;
import javafx.scene.paint.*;
import javafx.stage.Stage;

public class DragTry extends Application {

   private Point2D dragVector = null;

   @Override
   public void start(Stage primaryStage) throws Exception {

      Pane root = new Pane();

      Pane node = new Pane();
      node.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, javafx.geometry.Insets.EMPTY)));
      node.setPrefWidth(100);
      node.setPrefHeight(50);
      node.setTranslateX(200);
      node.setTranslateY(200);

      node.setOnDragDetected(new EventHandler<MouseEvent>() {
         @Override
         public void handle(MouseEvent event) {
            System.out.println("odDragDetected");

            double x = event.getX(); …
Run Code Online (Sandbox Code Playgroud)

java drag-and-drop javafx

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

Java Paths.get .... readAllBytes(path)) 不适用于相对路径

我是 Java 新手,正在尝试构建 FX 应用程序。我的功能之一旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但是当我使用相对路径时会中断。

问题出在方法“readAllBytes”中,该方法仅适用于完整路径。但我需要相对路径,因为文件夹位置会有所不同。

目标文件位于项目文件夹中。有没有其他方法可以用来读取文件内容,不需要绝对路径?

非常感谢。下面是片段:

    if (checkbox.isSelected()) {
        //this works .....
        Path path = Paths.get("//home/../../../../Target.fxml")
        Charset charset = StandardCharsets.UTF_8; 
        String content = new String(Files.readAllBytes(path));
        content = content.replaceAll("text_old" , "text_new");
        Files.write(path, content.getBytes(charset));

        //this doesn't work...
        Path path = Paths.get("Target.fxml");


Caused by: java.nio.file.NoSuchFileException: Target.fxml
Run Code Online (Sandbox Code Playgroud)

java javafx relative-path

0
推荐指数
2
解决办法
2万
查看次数

如何使用 javafx 设计聊天框 GUI

我想使用 javafx 为聊天应用程序创建一个 GUI 界面,其中对话像其他社交网络应用程序一样对齐。例如,用户 1 的对话将始终出现在左侧,而用户 2 的对话始终出现在右侧。

作为 javafx 的初学者,我有两个想法。

  1. 创建一个列表项并将对话添加到该列表并设计每个单元格
  2. 将新标签控件添加到每个对话的布局窗格中

对于这样的 GUI,开始时的好主意是什么?

我希望 GUI 是这样的

hello
        hi, nice to meet you
same here
                how are you?
Run Code Online (Sandbox Code Playgroud)

请提出正确的做法。谢谢你。

user-interface javafx

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

JavaFx 组合框 JFoenix css

我目前正在使用 jfoenix 的组合框,但我的问题是我无法编辑其中的提示文本颜色。它一直使用默认的灰色。如何将组合框的字体颜色从灰色更改为白色?有没有办法在css中做到这一点?

这是它的样子: 在此处输入图片说明

我希望你能帮我解决这个问题。

先感谢您。

css java combobox javafx

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

JavaFX css样式不起作用 - 未知属性+找不到资源

我收到以下代码的警告“未知属性”,位于我的 css/styles.css 文件中:

.root {
    -fx-background-color: #000000;
}
Run Code Online (Sandbox Code Playgroud)

我的 JRE 系统库中有 jfxrt.jar,否则 JavaFX 工作正常。

当我运行程序时,自定义样式根本不会出现在我尝试应用它的视图中。

视图文件中的内容如下:

Scene scene = new Scene(pane);
scene.getStylesheets().add("css/styles.css");
stage.setScene(scene);
Run Code Online (Sandbox Code Playgroud)

编辑:

我在控制台中收到以下警告:

警告:找不到资源“css/styles.css”。

css文件的路径是: View/css/styles.css

登录视图的路径是 View/LoginView.java

css java javafx

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

让窗口在 JavaFX 中向下滚动

所以我现在正在尝试学习 Java,因为我知道 JavaScript 和 PHP。我正在使用 JavaFX 在 Netbeans 中工作,我正在尝试创建一个创建 5 个按钮的程序。(这是在创建新的 JavaFX 应用程序时修改 Netbeans 附带的代码。)如果我将场景的 y 参数更改为小于所有按钮的 y,它将不会显示剩余的按钮,它将无法向下滚动。这是我到目前为止。如何启用它向下滚动以便可以看到所有按钮?我知道我可以将场景改回原来的高度,但我想了解使用 JavaFX 滚动。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javax.swing.JScrollPane;

public class JavaFXApplication1 extends Application {

    @Override
    public void start(Stage primaryStage) {
        GridPane root = new GridPane();
        Button[] btn=new Button[5];
        for(int i=0;i<5;i++){
            btn[i] = new Button();
            btn[i].setText(i+"");
            GridPane.setRowIndex(btn[i],i); 
            root.getChildren().addAll(btn[i]);
            btn[i].setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("This is a button");
            }
        }); …
Run Code Online (Sandbox Code Playgroud)

java netbeans javafx

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

JavaFX 如何添加元素,例如。从存储在数据库 Mysql 中的项目动态创建的按钮?

在 youtube 上有这个视频https://www.youtube.com/watch?v=Idtm2Y6I23w 其中 这个人动态填充了从存储在数据库中的项目创建的按钮。例如在这张图片中 在此处输入图片说明

它有一些类别,包括TablesStockReportsUsers 当在用户点击Table类别它显示Buttons动态地从存储在数据库中的MySQL项创建的。例如,这是结果图像:在此处输入图片说明

一个人怎么发展成这样?是否有将要使用的 for 循环语句?

编辑

我就是这样做的。这是源代码。

public class OrderController implements Initializable {

    @FXML
    private ListView<Button> listvieww;

    @FXML
    private HBox hboxx;

    List<String> listOfSomething = null;
//@FXML
//    private Pane panedynamic;
    private DBConnection database = new DBConnection();
    private Connection connection;
    private Statement statement;
    private ResultSet resultSet;

    private ObservableList<Button> buttons = FXCollections.observableArrayList();

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle …
Run Code Online (Sandbox Code Playgroud)

java mysql javafx fxml javafx-8

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

在应用程序线程外更新 JavaFX Live 节点

JavaFX 应用程序线程。我能找到的消息来源说节点上的所有更新都必须在这个线程中发生。

我正在尝试查找有关此规则的文档,以及此规则是否有任何例外。 https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm 正如它所说:

JavaFX 场景图表示 JavaFX 应用程序的图形用户界面,它不是线程安全的,只能从 UI 线程(也称为 JavaFX 应用程序线程)访问和修改。

https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-architecture.htm#A1107438

任何“实时”场景,即属于窗口一部分的场景,都必须从此线程访问。可以在后台线程中创建和操作场景图,但是当其根节点附加到场景中的任何活动对象时,必须从 JavaFX 应用程序线程访问该场景图。

我曾经历过,并非节点上的所有更新都必须在 JavaFX AT 上完成。一些更新节点的调用在该线程之外工作正常。例如,更新 Text textProperty 不需要在 JavaFX AT 中运行。因此,它看起来不像设置工具提示,或者改变可见性/禁用/管理。

JavaFX AT 之外的 Label textProperty 更新将抛出一个

IllegalStateException:不在 FX 应用程序线程上;当前线程 = 任务

javafx javafx-8

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

停止调整大小超出屏幕分辨率范围 (JavaFX)

我正在开发一个 JavaFX 应用程序(使用 Java 版本 8u51)并且我成功了,resizable但是我现在拥有的默认行为不是想要的行为。问题是我能够resize超出屏幕分辨率范围。换句话说,我可以制作Stage比我的屏幕更大的。有没有办法限制resize当前的显示器分辨率?我不得不提一下,我需要它来处理任何分辨率和任何屏幕尺寸。

css java user-interface javafx

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