我正在玩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) 我有一个表格单元工厂负责在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) 当我运行javafxpackager时,我收到以下警告/信息:
No base JDK. Package will use system JRE.
Run Code Online (Sandbox Code Playgroud)
从部署JavaFX应用程序的文档中不清楚 如何指定替代JDK.它没有选择,我可以看到(也许我是盲目的).它是系统属性吗?
谢谢.
我正在使用javafx v8.0.40开发桌面应用程序.我用inno 5创建了一个exe文件.当我在我的计算机上运行exe文件时,它安装并运行没有任何问题.另一方面,当我尝试在其他计算机上安装并运行它时,在安装结束时会弹出窗口对话框:"错误调用方法",我单击"确定".另一个窗口弹出"无法启动jvm".我搜索了整个互联网,但我找不到这个话题.我希望我能解决这个问题.先感谢您.
我有一个显示最后N个项目的TableView,顶部的新项目,从底部删除项目等...似乎正在发生的事情是CPU负载随着时间的推移而增加,以指示同一台机器上的其他X应用程序变得迟缓.
平台细节:Redhat 6.7,32位,Java 1.8u40
我尝试过的事情
这个问题是较大的应用程序的一部分,但我已将其作为下面的一个较小的例子.这使得其他应用程序在几分钟后变得缓慢,但仅限于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) 我正在GUI使用JavaFx,我需要只允许integers选择的滑块.
我知道我可以使用snapToTicks,但在拉动时"knob",它仍然可以代表一个non-integer值.我想摆脱它.它弄乱了与之相关的其他组件.
基本上,我想要类似的东西Swing's JSlider,但有JavaFx.可能吗?我一直在寻找,但我找不到任何东西.
有没有办法看到JavaFX-Elements的应用CSS规则?或者是否有可用的默认CSS规则的已发布参考?
我想,例如,知道工具栏边框的颜色.
JavaFX 2不提供验证支持(掩码,输入过滤等......).采用不提供基本功能的技术是很困难的.我正在尝试实现自己的验证器,但这是一个很大的痛苦.
JavaFX 8中有关于验证的新闻吗?我试图找到新的功能,但我不知道在哪里搜索,很难找到JavaFX 8中究竟会发生什么变化.我需要了解它,因为我正在考虑将JavaFX用于新的应用程序.
我有一个带有图像和文字的标签
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下面设置文字?
我全新安装了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来编译程序,那么每件事情都可以.
任何提示如何解决这个问题?