我想让这个文本字段有建议功能,就像在Lucene中一样。我已经搜索了所有的网络,我只是找到了它的组合框。
TextField instNameTxtFld = instNameTxtFld();
private TextField instNameTxtFld() {
TextField txtFld = new TextField();
txtFld.setPrefSize(600, 75);
return txtFld;
}
我不能使用组合框的方法的原因是因为我不能输入的值到下面的数据库,如果我使用组合框。
private void goNext() {
if (nameTxtFld.getText() == null || nameTxtFld.getText().trim().isEmpty()
|| instNameTxtFld.getText()== null || instNameTxtFld.getText().trim().isEmpty()
|| addTxtArea.getText() == null || addTxtArea.getText().trim().isEmpty()) {
alertDialog.showAndWait();
} else {
String satu = idNumTxtFld.getText();
String dua = nameTxtFld.getText();
String tiga = addTxtArea.getText();
String empat = instNameTxtFld.getText();
int delapan = idType.getSelectionModel().getSelectedIndex();
String sembilan = timeStamp.getText();
try {
KonekDB.createConnection();
Statement st = KonekDB.conn.createStatement();
String sql = "INSERT INTO privateguest"
+ "(idNumber, name, address, institution, idType, startTime) "
+ "VALUES "
+ "('" + satu + "','" + dua + "','" + tiga + "','" + empat + "','" + delapan + "','" + sembilan + "')";
System.out.println(sql);
st.executeUpdate(sql);
} catch (SQLException ex) {
System.out.println(satu + " " + dua + " " + tiga + " " + empat + " " + delapan + " " + sembilan);
System.out.println("SQL Exception (next)");
ex.printStackTrace();
}
Frame3Private frame3 = new Frame3Private(english);
this.getScene().setRoot(frame3);
}
}
请帮助我制作最简单的代码来执行TextField建议/自动完成。
6条答案
按热度按时间laik7k3q1#
这是我基于This的解决方案。
您必须从“TextField”而不是“TextFieldWithLengthLimit”扩展,并删除具有“Length limit”的构造函数。
我使用静态方法来处理Styles。它在这里被用来“突出显示”建议结果中输入的文本。下面是这个类的方法代码:
您可以在FXML中(不要忘记“imports”)或在构造函数内添加此“自动完成lTextField”。要在使用“entries”getter时设置“建议”列表:
在我的应用程序中似乎是这样的:
希望能有所帮助。
qmelpv7a2#
您可以使用ControlsFX --〉maven
解决方法:
72qzrwbm3#
JFoenix还有另外一个解决方案。自2018年2月起,他们增加了自动补全类。这是它的实现。
这是一个有点新的方法和工作与我很好。希望它会有所帮助,并感谢JFoenix开发人员。
gstyhher4#
此示例https://gist.github.com/floralvikings/10290131只允许字符串。
我编辑了它,允许任何对象,并只使用该对象的
toString
方法。这允许您使用所选对象来做其他事情,而不仅仅是填充TextField。还修复了一个错误,即如果您删除TextField
中不属于条目的String
,则会发生异常。示例用法:
自动完成文本字段.java
iyr7buue5#
下面是我的解决方案-一个只包含ComboBox参数的完整方法:
qyzbxkaa6#
这是一个相当古老的主题,但由于我刚刚遇到了这个问题,我组装了我的解决方案的部分已经提到。就像@RicherdK已经说过的,你可以使用controlsfx和最简单的方法绑定它就像他说的:
在他的评论中提到,这对于自动完成来说是相当慢的。这是真的,因为在没有键盘敲击的情况下,显示建议需要250毫秒。因此,你可以将延迟设置为任何你想要的:
除了这个小细节,我在使用这个库时遇到了一个问题,我不得不补充:
其他一些人也有类似的问题,你可以找到它here,并确保你的JavaFx版本匹配