标签: javafx-8

带有FilteredList的JavaFX Tableview(JDK 8)不按列排序

我正在玩FilteredList他们已经添加到JDK8中的课程,感觉要快得多 - 似乎让性能更接近GlazedLists.但是,当我使用a FilteredList而不是a 时,表列排序似乎根本不起作用ObservableList.

控制台中没有异常/堆栈跟踪.

以下是我的控制器中的实例成员:

    private ObservableList<Film> masterData = FXCollections.observableArrayList();
    private FilteredList<Film> filteredData;
Run Code Online (Sandbox Code Playgroud)

我的控制器init:

@FXML
void initialize() {
   ...   
   filmTable.setItems(filteredData);
   ...
}
Run Code Online (Sandbox Code Playgroud)

构造函数:

public FilmBrowserController() {

   ...
   masterData.addAll(filmRepository.findAllSortedByTitle());
   filteredData = new FilteredList<>(masterData);
   filteredData.setPredicate(film -> true);
}
Run Code Online (Sandbox Code Playgroud)

我一直在通过在更改过滤器TextField时设置新谓词来过滤列表:

filteredData.setPredicate(film ->
     film.getTitle().toLowerCase().contains(filterField.getText().toLowerCase()));
Run Code Online (Sandbox Code Playgroud)

我对JavaFX还很绿 - 我错过了一些非常基本的东西,或者这可能是一个bug?我正在使用下载的JDK 8:https://jdk8.java.net/download.html Build b100.

是否不可能有一个可以过滤但同时按列排序的表?

编辑:

修改了我在stackoverflow上找到的另一个javaFX表示例,我添加了这一行(74):

table.setItems(table.getItems().filtered(p -> p.getFirstName().startsWith("a")));
Run Code Online (Sandbox Code Playgroud)

完整来源:

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*; …
Run Code Online (Sandbox Code Playgroud)

java java-8 javafx-8

13
推荐指数
2
解决办法
9482
查看次数

在JavaFX中单击外部可编辑的TableView单元格时如何提交?

我有一个表格单元工厂负责在JavaFX TableView中创建可编辑单元格.

我正在尝试为tableview实现一些附加功能,以便当用户在可编辑单元格外部单击时进行提交(编辑的文本将被保存,而不会根据默认的tableview行为进行丢弃.)

我添加了一个textField.focusedProperty()事件处理程序,我从文本字段提交文本.但是,当一个单击外部时,当前单元格cancelEdit()被调用并且调用commitEdit(textField.getText());无效.

我已经意识到,一旦cancelEdit()被称为TableCell.isEditing()返回false,所以提交永远不会发生.

如何在用户点击可编辑单元格外部时提交文本?

提交setOnEditCommit()事件处理程序后,将处理验证和数据库逻辑.我没有把它包含在这里,因为它很可能会使事情进一步复杂化.

// EditingCell - for editing capability in a TableCell
public static class EditingCell extends TableCell<Person, String> {
private TextField textField;

public EditingCell() {
}

@Override public void startEdit() {
    super.startEdit();

    if (textField == null) {
        createTextField();
    }
    setText(null);
    setGraphic(textField);
    textField.selectAll();
}

@Override public void cancelEdit() {
    super.cancelEdit();
    setText((String) getItem());
    setGraphic(null);
}

@Override public void updateItem(String item, boolean empty) {
    super.updateItem(item, empty); …
Run Code Online (Sandbox Code Playgroud)

java javafx-8

13
推荐指数
3
解决办法
9986
查看次数

Javafxpackager:你如何设置"基础JDK"?

当我运行javafxpackager时,我收到以下警告/信息:

No base JDK. Package will use system JRE.
Run Code Online (Sandbox Code Playgroud)

部署JavaFX应用程序的文档中不清楚 如何指定替代JDK.它没有选择,我可以看到(也许我是盲目的).它是系统属性吗?

谢谢.

javafx-8

13
推荐指数
3
解决办法
1万
查看次数

调用方法时出错,无法启动jvm

我正在使用javafx v8.0.40开发桌面应用程序.我用inno 5创建了一个exe文件.当我在我的计算机上运行exe文件时,它安装并运行没有任何问题.另一方面,当我尝试在其他计算机上安装并运行它时,在安装结束时会弹出窗口对话框:"错误调用方法",我单击"确定".另一个窗口弹出"无法启动jvm".我搜索了整个互联网,但我找不到这个话题.我希望我能解决这个问题.先感谢您.

javafx javafx-8

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

JavaFX滚动表更新性能会随着时间的推移而降低

我有一个显示最后N个项目的TableView,顶部的新项目,从底部删除项目等...似乎正在发生的事情是CPU负载随着时间的推移而增加,以指示同一台机器上的其他X应用程序变得迟缓.

平台细节:Redhat 6.7,32位,Java 1.8u40

我尝试过的事情

  • 引入了runLater() - 原始代码从非FX线程更新了可观察列表 - 显然这是错误的
  • 优化 - 如果尚未进行更新,则仅在JavaFX应用程序线程上放置新的Runnables
  • 优化-bulk更新Observable列表而不是单独添加
  • 使用jvisual VM来识别任何内存泄漏,找不到任何东西.
  • 我试图重新创造这个
    • Windows 7(在金属上) - JDK 8u40 64位=>不会发生
    • Ubuntu 16.04 JDK 8u40 64位(在带有vmwgfx的VM内)=>不会发生
    • Ubuntu 16.04 OpenJDK + OpenJFX最新版(8u91)(金属上)=> 确实发生

JVisual VM - 新硬件上的Redhat 6u7(32位)

Redhat 6u7

JVisual VM - 旧硬件上的Ubuntu 16.04(64位)(2008 iMac)

英特尔iMac上的Ubuntu 16.04

这个问题是较大的应用程序的一部分,但我已将其作为下面的一个较小的例子.这使得其他应用程序在几分钟后变得缓慢,但仅限于Redhat 6u7平台.

public class TableUpdater extends Application {
    private int maxItems = 30;
    private AtomicBoolean pending = new AtomicBoolean();
    public class Thing {
        private String foo;
        public Thing(String foo) {
            this.foo = foo;
        } …
Run Code Online (Sandbox Code Playgroud)

java performance multithreading javafx javafx-8

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

如何让JavaFX Slider以离散的步骤移动?

我正在GUI使用JavaFx,我需要只允许integers选择的滑块.

我知道我可以使用snapToTicks,但在拉动时"knob",它仍然可以代表一个non-integer值.我想摆脱它.它弄乱了与之相关的其他组件.

基本上,我想要类似的东西Swing's JSlider,但有JavaFx.可能吗?我一直在寻找,但我找不到任何东西.

java integer javafx slider javafx-8

13
推荐指数
2
解决办法
8952
查看次数

默认JavaFX-CSS

有没有办法看到JavaFX-Elements的应用CSS规则?或者是否有可用的默认CSS规则的已发布参考?

我想,例如,知道工具栏边框的颜色.

css fxml javafx-8

12
推荐指数
4
解决办法
3万
查看次数

JavaFX 8是否会实现文本字段验证支持?

JavaFX 2不提供验证支持(掩码,输入过滤等......).采用不提供基本功能的技术是很困难的.我正在尝试实现自己的验证器,但这是一个很大的痛苦.

JavaFX 8中有关于验证的新闻吗?我试图找到新的功能,但我不知道在哪里搜索,很难找到JavaFX 8中究竟会发生什么变化.我需要了解它,因为我正在考虑将JavaFX用于新的应用程序.

java javafx-2 javafx-8

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

标签文字位置

我有一个带有图像和文字的标签

final Label label = new Label(labelText);
label.setTextAlignment(TextAlignment.CENTER);

ImageView livePerformIcon = new ImageView(MainApp.class.getResource("/images/Folder-icon.png").toExternalForm());
label.setGraphic(livePerformIcon);
Run Code Online (Sandbox Code Playgroud)

我得到这个视觉效果:

在此输入图像描述

我怎样才能改变文字位置?我想在Image下面设置文字?

javafx javafx-2 javafx-8

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

在Eclipse Luna中使用JavaFX(JDK 1.8.0_05)不起作用

我全新安装了Java 8(Windows 7 32位的JDK 1.8.0_05)和Eclipse Luna.当我尝试构建一个简单的JavaFX程序时,Eclipse在编辑器中显示以下消息:

访问限制:"应用程序"类型不是API('C:\ Program Files\Java\jre8\lib\ext\jfxrt.jar')

如果我在命令行上使用javac来编译程序,那么每件事情都可以.

任何提示如何解决这个问题?

eclipse javafx-8 eclipse-luna

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