有人知道在 Eclipse 的内容帮助中将this
关键字 (Java) 标记为的原因static final
吗?final
对我来说很有意义,但为什么static
呢?
该屏幕截图是使用 Eclipse 2020-03 制作的,但我多年来一直在观察这种行为。
我正在玩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) 我有一个SimpleIntegerProperty
应该能够存储null
. 但是,这是不可能的,如IntegerProperty的 JavaDoc 中所写:
注意:将此属性设置或绑定到一个
null
值会将属性设置为“0.0”。见setValue(java.lang.Number)
。
这也适用于其他属性,如LongProperty
,FloatProperty
,DoubleProperty
,和BooleanProperty
(而不是StringProperty
,它允许null
!)。为什么会这样?是否有解决方法可以存储null
在这些属性中?
我有TableView
一些行.用户可以选择任何行,但当他点击空行或任何地方时Stage
,我想清除他当前的选择TableView
.
我想要在 JavaFX- 上方显示文本TextField
。设置prompText
几乎是我想要的,但对于我的用例来说有一些缺点。下面的代码似乎可以工作,但是将 a 添加Label
到 的子级感觉是错误的TextField
。以下代码是否违反任何 JavaFX 原则或者使用安全吗?
public class MyTextField extends TextField {
public MyTextField() {
Label label = new Label("test");
this.getChildren().add(label);
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个布局使用GridBagLayout
:
public class Example extends JFrame {
public Example() {
Border outline = BorderFactory.createLineBorder(Color.black);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
JPanel pane = new JPanel(gbl);
gbc.weighty = 1.0;
gbc.weightx = 1.0;
JLabel unitLbl = new JLabel("Unit");
unitLbl.setBorder(outline);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(unitLbl, gbc);
pane.add(unitLbl);
JLabel typeLbl = new JLabel("Type");
typeLbl.setBorder(outline);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(typeLbl, gbc);
pane.add(typeLbl);
JTextField …
Run Code Online (Sandbox Code Playgroud) 我想TableView
在 JavaFX 中创建一个简单的数据,其中我的数据是一个类似矩阵的二维double[][]
数组,但我不知道如何实现这一点,有什么建议吗?