标签: javafx-8

选中/取消选中 TableView 上的 JavaFx CheckBox 不会更新模型

我有一个带有复选框的第一列的 TableView。

我设法正确显示复选框并使其可编辑,但是当我单击复选框以选中或取消选中时,复选框会更改但它不会更新我的模型。

我是这样做的:

TableColumn<ContasReceber, Boolean> myCheckBoxColumn = (TableColumn<ContasReceber, Boolean>) tabelaContas.getColumns().get(0);
myCheckBoxColumn.setCellFactory(p -> new CheckBoxTableCell<>());
myCheckBoxColumn.setOnEditCommit(evt -> evt.getRowValue().setChecked(evt.getNewValue()));//It never executes the method setChecked when i click on the checkBox to change it's values.
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-2 javafx-8

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

FXML 变量未绑定

我的 FXML 注入有问题。据我所知,我已经设置了我的程序,但似乎我遗漏了一些东西。我的代码如下:

主要的:

package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;


public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {

        try {

            FXMLLoader loader = new FXMLLoader(getClass().getResource("NoteKeeper.fxml"));

            BorderPane root = (BorderPane)loader.load();
            Scene scene = new Scene(root,root.getHeight(),root.getWidth());
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

package application;




import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane; …
Run Code Online (Sandbox Code Playgroud)

java javafx fxml javafx-8

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

JavaFX8 - Guice 的线程任务

我是 Guice 和 JavaFX 的新手(非常新)。我正在构建一个应用程序,它有一个线程侦听套接字连接,并且在接收到事件后,线程将值存储在 ObservableArrayList() 上,应用程序会将它们通知给用户。

我的问题是如何构建所有这些行为,以及如何从线程和 JavaFX 控制器“共享” ObservableList。

我正在阅读有关 Guice 的文章,它可以帮助解耦new对象的创建。

我试图设置一些东西,但 @Inject 属性在我的可运行任务中为空:

图形模块:

public class AppGuiceModule extends AbstractModule{

    @Override
    protected void configure() {
        bind(EventsDAO.class).toInstance(new EventsDAO());
    }

}
Run Code Online (Sandbox Code Playgroud)

EventsDAO(具有 ObservableArrayList )

@Singleton
public class EventsDAO {
     private ObservableList<ScheduledEvent> localCache = FXCollections.observableArrayList();

     public void addEvent(ScheduledEvent event) {
         localCache.add(event);
     }

     public void removeEvent(ScheduledEvent event) {
         this.localCache.remove(event);
     }
}
Run Code Online (Sandbox Code Playgroud)

有了两个这个,我在我的主要我去创建注入器:

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

        Injector injector = Guice.createInjector(new AppGuiceModule());

        Platform.setImplicitExit(false);

        Thread …
Run Code Online (Sandbox Code Playgroud)

java multithreading guice javafx-8

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

警告:系统无法支持 ConditionalFeature.SCENE3D - VMWare、Ubuntu

我意识到 SO 上已经有一个类似的问题,但是,该问题与 VMWare 无关,我想知道这更像是 VMWare 问题还是一般的 Linux 问题。

创建动画 3D 球体时,我在 Eclipse 中收到以下警告:

May 17, 2015 5:35:35 PM javafx.scene.shape.Mesh <init> WARNING: System can't support ConditionalFeature.SCENE3D
Run Code Online (Sandbox Code Playgroud)

在 Windows 中编译时,球体是 3D 和动画的。在 Ubuntu 中,它只是 2D 和静态的。

主机 Win 8.1 Nvidia 660m VM Workstation 11(启用 3d 加速,VMware 工具最新)Ubuntu 15.04 LTS

任何共享的用户体验将不胜感激。

eclipse ubuntu vmware javafx-8

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

从 TextField 更新 TreeView 项目

这是我非常简单的例子。(下...)

What it does: TreeView is populated with three Persons, when TreeItem is selected Textfield will be populated with name of the selected person. 如果用户更改名称并从文本字段中失去焦点(或按 Enter),它将更改人员的名称并“更新”TreeView 项目的显示文本。

我的问题是这一行:

selectedItem.valueProperty().set(new Person(selectedPerson.getName(), selectedPerson.getAge()));
Run Code Online (Sandbox Code Playgroud)

多亏了那条线,我才能刷新 TreeView。没有那个,我只能在例如调整窗口大小(或根项目的折叠和展开)期间刷新树视图。

我认为这个解决方案非常愚蠢,必须有一种方法可以更好地对其进行编码。我不能每次都创建一个新的 Person 实例,这对我来说是不可接受的。

我还尝试为 treeView 触发一个事件,但这种方法会混淆焦点,而且它也是一个愚蠢的解决方案。我还找到了这样的解决方案:

treeView.getRoot().getChildren().set(treeView.getSelectionModel().getSelectedIndex(), new TreeItem<MainAppTF.Person>(updatedPerson));
Run Code Online (Sandbox Code Playgroud)

这也是不好的解决方案。

也许可以使用属性绑定找到解决方案,但绑定是“实时/即时”更改,除非我使用 bind() unbind(),但也许 Binding 中有一些我还不熟悉的东西。(我更喜欢听众)

我的主要目标是“提交”我对焦点更改或关键事件的更改,并在那一刻之后立即更新 TreeView。

PS:我将非常感谢真实的例子。

public class MainAppTF extends Application {

    private TreeView<Person> treeView;
    private final TreeItem<Person> rootNode = new TreeItem<Person>(new Person("Root", 0));

    private TextField textField;

    @Override
    public void start(Stage stage) {
        VBox box …
Run Code Online (Sandbox Code Playgroud)

treeview javafx javafx-8

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

如何从 JavaFX 中的 TableCell 中获取行引用对象?

我想要自定义TableCell<S,T>类,它的行为取决于行对象。“行对象”是指类型的对象S,而不是T.

显然,Cell#getItem()这不是我需要的,因为它返回T

java javafx tableview javafx-8

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

如何将“粘贴”操作限制为 JavaFX 中的特定 TextField?

有什么方法可以防止用户将数据“粘贴”到 TextField?我已经ChangeListener为它设置了 a ,但我找不到如何区分键盘输入和粘贴操作的方法。确定的一件事是:

 myChangeListener = (ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
    if(Math.abs(newValue.length() - oldValue.length()!=1){
        //definitely paste - entered more than one symbol
    }
 };
Run Code Online (Sandbox Code Playgroud)

但用户也可以一次粘贴单个字符。这是我无法捕捉的场景。请帮忙,提前致谢。

javafx textfield javafx-8

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

任务完成后JavaFX执行代码

我正在为我的应用程序使用 JavaFX,我正在使用 JavaFX 中的任务来上传文件。

public class Upload extends Task<UploadFile> {  
   private UploadFile uploadFile;     
   public Upload(UploadFile uploadFile){
        this.uploadFile= uploadFile;
    }

    @Override
    protected synchronized UploadFile call() throws Exception {
        ....
            hcl.invokeMethodUploadFile(uploadFile);
            return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

方法“initiate”创建一个 UploadFile-Container 并将其添加到 Threadpoolexecutor 的队列中。此方法将对每个文件执行一次。此类还包含在文件上传完成后继续进行的其他必要信息。

public void initiate(){

        UploadFile uc = new UploadFile(file);
        // Set other informations as well

   // add Container to queue
        main.getUploadFiles().add(uc);

    } 
Run Code Online (Sandbox Code Playgroud)

UploadFile 是一个包含有关文件、服务器信息等信息的类。
除其他外,我想在上传完成后将 url 插入到数据库中。文件上传后如何执行一些代码?

java task javafx-8

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

JavaFX 拖放鼠标图标旁边的自定义节点

在拖放期间在鼠标图标旁边显示节点的半透明“副本”的最佳方法是什么?

基本上,我有带有彩色背景和文本标签的 HBox,并且我想让它们在被拖动时“粘”到鼠标光标上。

如果用户可以直观地验证他们正在拖动的内容,而不是仅仅看到鼠标光标变成各种拖动图标,那就太好了。当您拖动某些组件(例如 RadioButton)时,Scene Builder 倾向于执行此操作。

java javafx javafx-8

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

JavaFX 滑块:轨道长度?勾选标签颜色?

.slider .track {
    -fx-pref-width: 300px;
}

.slider .axis-tick-label {
    -fx-text-fill: white;
}
Run Code Online (Sandbox Code Playgroud)

我为滑块编写 CSS 样式的微弱尝试都不起作用。我 100% 确定我的语法是关闭的。有什么帮助吗?

css java javafx slider javafx-8

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