我有一个基于 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 项目转换为在浏览器上运行吗?
为什么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 新手,正在尝试构建 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) 我想使用 javafx 为聊天应用程序创建一个 GUI 界面,其中对话像其他社交网络应用程序一样对齐。例如,用户 1 的对话将始终出现在左侧,而用户 2 的对话始终出现在右侧。
作为 javafx 的初学者,我有两个想法。
对于这样的 GUI,开始时的好主意是什么?
我希望 GUI 是这样的
hello
hi, nice to meet you
same here
how are you?
Run Code Online (Sandbox Code Playgroud)
请提出正确的做法。谢谢你。
我目前正在使用 jfoenix 的组合框,但我的问题是我无法编辑其中的提示文本颜色。它一直使用默认的灰色。如何将组合框的字体颜色从灰色更改为白色?有没有办法在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
所以我现在正在尝试学习 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) 在 youtube 上有这个视频https://www.youtube.com/watch?v=Idtm2Y6I23w 其中
这个人动态填充了从存储在数据库中的项目创建的按钮。例如在这张图片中

它有一些类别,包括Tables,Stock,Reports和Users
当在用户点击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) 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 应用程序(使用 Java 版本 8u51)并且我成功了,resizable但是我现在拥有的默认行为不是想要的行为。问题是我能够resize超出屏幕分辨率范围。换句话说,我可以制作Stage比我的屏幕更大的。有没有办法限制resize当前的显示器分辨率?我不得不提一下,我需要它来处理任何分辨率和任何屏幕尺寸。