我正在尝试制作一个组合框,它具有从其项目中搜索匹配项的功能。
这是我所做的代码示例,
ObservableList<String> ab = FXCollections.observableArrayList("z", "asxdf", "abasdf", "bcasdf", "b", "bc", "bcd", "c");
final ComboBox box = new ComboBox(ab);
box.setEditable(true);
box.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
box.show();
for (String item : items) {
if (item.startsWith(box.getEditor().getText())) {
box.getSelectionModel().select(item); //which selects the item.
break;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在的问题是box.getSelectionModel().select(item);选择在组合框中键入的特定项目,但我不想选择该项目,我只想将鼠标悬停在(聚焦)该项目上,就像鼠标悬停时一样。
谁能告诉我要替换的代码box.getSelectionModel().select(item);并帮助我解决这个问题。
所以我有这个Timeline自定义动画。节点转换无关紧要。
final KeyValue kv1 = new KeyValue(angle, HALF_PI, Interpolator.LINEAR);
final KeyValue kv2 = new KeyValue(angle, -HALF_PI, Interpolator.EASE_BOTH);
final KeyFrame kf1 = new KeyFrame(Duration.millis(0), kv1);
final KeyFrame kf2 = new KeyFrame(Duration.millis(500), kv2);
Timeline animation = new Timeline(kf1, kf2);
animation.setRate(1);
Run Code Online (Sandbox Code Playgroud)
我的angle变量在此时间线中被修改并用于节点的转换。如您所见,在本例中rate是1,duration是500。
为了平滑转换,我猜测角度应该经历几个离散值,这些值由Interpolator.
另外,我不倾向于使用 aTask来实现这一点。仅当延迟远小于使用Timeline.
问题:
哪种调整可以使动画更加平滑?
A.低rate+ 高duration
B.高rate+ 低duration
C. ??? 其他
我正在两个树视图之间实现拖拽。当一个树项被拖放到树项的另一个树视图上时,两个树项之间就会建立一条线连接。这工作正常,但是在没有拖放事件的情况下最初建立连接对我来说是个问题。我使用 treeCell 进行拖放事件。
我通过 Scene Builder 使用 FXML 来建立一些 JavaFX 场景和格式化模板。浏览了网络和 Oracle 教程后,我仍然发现确定布局大小/换行/适合内容/等的“规则”。元素和组件之间的间距对我来说 90% 是一种魔法。我缺少的是“布局概述”(缺少章节),它将 FXML(和 JavaFX)布局放在一起。如果您遇到过这种生物,请分享链接。
到目前为止,我只找到了少量信息。例如:
提供有关某一属性、参数或特征的一些有用信息。似乎没有任何内容概述大局,也没有努力将“字体系列”与(什么是)“有效字体”之间的点联系起来?
另外,我正在寻找一些可以完成更多业务或应用程序类型工作的示例。更多真实世界的示例,例如数据输入表单,其中包含文本字段、组合框、单选按钮等详细信息。在屏幕上执行“正常”操作,而不仅仅是查看闪亮的图形来显示 JavaFX 可能执行的操作。
我认为缺少的主要内容是有关不同 JavaFX 容器和元素的描述,以及将它们关联在一起以实现彼此相关的格式化外观、格式化布局、渲染大小。
请原谅我举了一个听起来像是批评的例子,这并不是为了我只是没有找到让我满足一些简单要求的信息:
我可以列出我遇到的主要的、具体的障碍(接下来)。我接受的是,我的知识和我正在阅读的关于容器如何工作的知识存在差距,最小-首选-最大宽度和高度如何工作?他们如何互动等等?就目前而言,这个问题可能太大了。我可以举一个例子和一些可以遵循的细节,并将其留给群众的智慧......
例子
| col-01 | col-02 | col-03 | col-04 | col-04 |
| | | | | |
| expand | fixed | scale | expand | fit |
| | percent …Run Code Online (Sandbox Code Playgroud) 我创建了带有两个堆栈的堆栈条形图,我想让后一个堆栈不可见......
StackBar.getData().addAll(series1,series2);
Run Code Online (Sandbox Code Playgroud)
我想改变系列1中的颜色,
有没有任何方法或教程可以展示如何做到这一点?
我ImageView想在其中一张一张地显示两张图像。我希望这两个图像之间的过渡具有淡入淡出效果。这是我尝试过的:
KeyFrame keyFrame1On = new KeyFrame(Duration.seconds(.2), new KeyValue(imageView.imageProperty(), image1, Interpolator.EASE_OUT));
KeyFrame keyFrame2On = new KeyFrame(Duration.seconds(.5), new KeyValue(imageView.imageProperty(), image2, Interpolator.EASE_OUT));
Timeline timelineOn = new Timeline(keyFrame1On, keyFrame2On);
timelineOn.setAutoReverse(false);
timelineOn.play();
Run Code Online (Sandbox Code Playgroud)
但图像之间的过渡是坚实的,没有褪色。我究竟做错了什么?
我目前正在探索 Java JDK 8u40 的新功能,我必须说我真的很喜欢内置对话框类。与 ControlsFX 相比,当对话框打开时没有背景效果(ControlsFX 使背景显得更暗)。我还想使用 JavaFX 中的新对话框类来执行此操作。我正在使用以下代码:
\n\nTextInputDialog dialog = new TextInputDialog();\ndialog.initOwner(null);\ndialog.initStyle(StageStyle.UNDECORATED);\ndialog.setHeaderText(\xe2\x80\x9cPlease fill in a new number\xe2\x80\x9c);\ndialog.setContentText(\xe2\x80\x9cNew number:\xe2\x80\x9d);\n\n//Check if the optional is filled in\nOptional<String> newAmount = dialog.showAndWait();\nif (result.isPresent()){\n System.out.println(\xe2\x80\x9cNew number: " + result.get());\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我在对话框类中找不到任何有用的部分。我尝试了这段代码,但它有点老套,而且有点慢:
\n\nmyMainFlowPane.setOpacity(0.5);\n// ..... dialog code ..... //\nmyMainFlowPane.setOpacity(1.0);\nRun Code Online (Sandbox Code Playgroud)\n\n你应该说必须有一个内置方法。你们中有人知道该怎么做吗?
\n\n任何帮助是极大的赞赏!
\n我正在编写一个基于 Javafx 的 Web 浏览器。我想获取当前在 WebEngine 中打开的网页的标题。谢谢 :)
我已经用 MySQL 数据库中的表的列填充了 JavaFX TableView。
在我的 TableView 中,我创建的第一列是“Number”,它没有链接到 MySql 数据库表中的任何列。在这一列中,我想查看每行的行数。
例如,如果 TableView 有 5 行,则“数字”列必须分别为每行显示数字 1、2、3、4、5。如果删除第 4 行,则剩余行的行号应为 1,2,3,4。
我有一个 java FX 基本应用程序,它有一个简单的场景(一个表单)。我有一个 Mysql Db,我正在使用 Spring JPA(spring data jpa,即存储库/实体)与之交互。
现在,因为我们知道 javaFx 有一些生命周期钩子,即:init() start() 和 stop()。
假设我想使用 JPA save()方法在数据库中插入数据。通常,如果是我的控制器,则是正常的数据库注入,例如:
@Autowired
EmployeeRepo employeeRepo;
Run Code Online (Sandbox Code Playgroud)
本来可以工作的。但是,我无法在生命周期方法中访问此(或任何自动装配注入)。
public void start(Stage primaryStage) throws Exception {
// Some Code
employeeRepo.findAll() <- This is returning null
Run Code Online (Sandbox Code Playgroud)
但是,当我添加一个测试方法并使用相同的方法时,它工作正常:
@PostConstruct
public void test() {
// Repo object is not giving null
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以手动将依赖项注入我的按钮侦听器中或将其传递给启动方法。
请让我知道是否有解决方案,因为我是 JavaFX 的新手