- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的类,它获取作业列表并尝试用它们填充 TableView。我在不使用 FXML 的情况下完成了这项工作,但我现在正在尝试新方法。我遇到的问题是;
tView.getItems().addAll(jobList);
返回一个空指针,但是如果我创建一个新的 TableView,则表中根本没有数据。
我相信我出错的地方是使用了在 SceneBuilder 中构造的 TableView 并且没有正确初始化它,但是我对如何执行此操作感到困惑。这是我的 InterFace 方法类;
public class InterfaceMethods {
@FXML TableView<Job> tView;
@SuppressWarnings("unchecked")
public void populateTableView(Connection connection, Stage stage) throws Exception {
Parent root;
root = FXMLLoader.load(getClass().getResource("TableViewInterface.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
JobDataAccessor jobAccessor = new JobDataAccessor();
final String query = "SELECT * FROM progdb.adamJobs";
List<Job> jobList = jobAccessor.getJobList(connection, query);
//System.out.println(query);
//System.out.println(connection);
tView.getItems().addAll(jobList);
}
}
这是我的 MainApp 类;
public class MainApp extends Application {
private CheckUserDetails checkDetails;
private String pString, username = System.getProperty("user.name");
private InterfaceMethods iMethods;
private Connection connection;
@FXML private Button submitButton;
@FXML private PasswordField passField;
@FXML private Label warnLabel;
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("MainInterface.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@FXML
private void loginCheck() throws Exception {
checkDetails = new CheckUserDetails();
pString = new String();
pString = passField.getText();
System.out.println(pString);
if (checkDetails.checkUserDetails(pString, username) != null) {
setConnection(checkDetails.connection);
handleTableView();
} else {
warnLabel.setVisible(true);
}
}
@FXML
public void handleTableView() throws Exception {
iMethods = new InterfaceMethods();
Stage stage = (Stage) submitButton.getScene().getWindow();
connection = getConnection();
iMethods.populateTableView(connection, stage);
}
public static void main(String[] args) {
launch(args);
}
最后这是我的两个 FXML 文件之一,其中包含 TableView;
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.GridPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.InterfaceMethods">
<children>
<TableView fx:id="tView" layoutX="17.0" layoutY="19.0" prefHeight="347.0" prefWidth="570.0">
<columns>
<TableColumn prefWidth="75.0" text="CaseNO." />
<TableColumn prefWidth="75.0" text="Case Notes" />
<TableColumn prefWidth="75.0" text="Date Created" />
<TableColumn prefWidth="75.0" text="Deadline" />
<TableColumn prefWidth="75.0" text="Priority" />
<TableColumn prefWidth="75.0" text="Completed" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</AnchorPane>
getJobList 方法(在不同的类中);
public List<Job> getJobList(final Connection connection, final String query) throws SQLException {
try (Statement stmnt = connection.createStatement(); ResultSet rs = stmnt.executeQuery(query);) {
jobList = new ArrayList<>();
System.out.println(connection);
System.out.println(query);
while (rs.next()) {
caseNumber = rs.getString("CaseNO");
caseNotes = rs.getString("CaseNotes");
dateCreated = rs.getString("DateCreated");
deadlineDate = rs.getString("Deadline");
prioritySetting = rs.getInt("Priority");
completedSetting = rs.getString("Completed");
job = new Job(caseNumber, caseNotes, dateCreated, deadlineDate, prioritySetting, completedSetting);
jobList.add(job);
}
return jobList;
}
}
最佳答案
You need to define the controller for your FXML.
例如,您的 FXML 部分是:-
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="288.0" prefWidth="293.0" xmlns:fx="http://javafx.com/fxml">
<children>
<TableView fx:id="tableView" layoutX="35.0" layoutY="28.0" prefHeight="200.0" prefWidth="227.0">
<columns>
<!-- Columns for table view-->
</columns>
</TableView>
</children>
</AnchorPane>
1) 为您的 FXML 页面创建一个 Controller ,例如:-
fx:controller="com.code.Controller"
2)现在在您的 Controller 中,您可以执行以下操作:-
package com.code;
public class Controller implements Initializable {
@FXML private TableView<User> tableView;
关于JavaFX TableView 与 SceneBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32269093/
我是 JavaFX 的新手,我还没有找到关于这个问题的任何教程/答案。 所以基本上我想做的只是改变我场景的一部分。我想在顶部保留一个静态菜单栏,仅根据单击的菜单按钮更改底部。这意味着我需要为每个“页面
在我的 JavaFX 应用程序中,某些节点显示在预览中,但不可选择,也不会显示在层次结构中。 SceneBuilder 不可定位示例: 在此示例中,“名字”列不可定位,并且不会显示在层次结构中,即使它
我在使用场景生成器时遇到了奇怪的渲染问题,但前提是我从 ControlsFX 导入了 JAR。 正如您在以下视频中看到的: https://www.youtube.com/watch?v=dD1euL
我创建了这个自定义组件: public class IconButton extends Button { @FXML private ImageView imageView; pri
我下载了 Scene Builder,并尝试打开 .fxml 文件,但出现以下错误消息: Failed to launch SceneBuilder. The error message was: C
我刚刚从 Gluon 安装了 SceneBuilder,但无法启动它...它安装正确(我注意到安装程序没有到达末尾...但所有文件都在 AppData/Local 中正确)我尝试启动 EXE 但它不会
我安装了 SceneBuilder 8.3.0在安装了Java Hotspot 1.8.0_131的Ubuntu Gnome 17.04上,尝试启动时出现错误,无法初始化。我已经尝试安装Oracle的
不确定这是不是该问的地方。如果有更好的 SE 站点,请告诉我。 自从我开始使用 SceneBuilder 以来,它的子菜单就完全无法使用,因为一旦我移动光标选择一个选项,它们就会消失。 例如 - 假设
我对 SceneBuilder 和 Java FX 处理自定义控件的方式束手无策。 我是使用 fx:root,还是不使用它?我选择使用它。所以在控件的Controller+Root类,我把自己设置为r
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
在 JavaFX 中存在控件 ToggleGroup 。我已经安装了SceneBuilder,版本: Product Version JavaFX Scene Builder 8.0.0 Build
我的问题是,如何在 JavaFX 中根据应用程序窗口的大小实现在操作过程中自动调整图像大小?这可以直接在 SceneBuilder 中完成吗? 最佳答案 它将其 WidthProperty 和 Hei
我需要用 SceneBuilder 创建一个 GUI。我在我的界面中添加了一个 ImageView 并正确设置了我的图像的路径。图像显示在 SceneBuilder 中,但是当我运行我的应用程序时,图
这就是我正在尝试做的事情: 我想要一个显示 31 个 Pane 的场景,然后将用红色或绿色填充它们。 (点击它们应该改变颜色) 我现在想知道实现这一点的最佳方法是什么。我首先想到了 TableView
我在 SceneBuilder 打开我的 main.fxml 时遇到问题。当我运行项目时一切正常,但我无法在 SceneBuilder 下进行修改。每次我想添加到 main.fxml 时,我都需要删除
我正在使用 SceneBuilder 构建 javaFX 应用程序,问题是,当我在 fxml 文件中指定相对路径时,它会在运行时抛出异常: null/../images/text_formal.png
我正在尝试使用场景生成器创建的按钮切换场景。 这是我的 Controller 类 public class Controller implements Initializable { @FXM
我有一个非常简单的类,它获取作业列表并尝试用它们填充 TableView。我在不使用 FXML 的情况下完成了这项工作,但我现在正在尝试新方法。我遇到的问题是; tView.getItems().ad
我试图在 SceneBuilder 中重新创建库列表的外观,但我不知道我需要采用哪个元素。 如何重新创建此列表? 最佳答案 这是使用 ControlsFx Awesome Fonts 的草稿。 Mai
我希望有人能够向我解释为什么 SceneBuilder 在导入自定义控件时如此不稳定。 以一个相对简单的自定义控件为例(仅作为示例): public class HybridControl exten
我是一名优秀的程序员,十分优秀!