javafx组合框可编辑自动完成
我创建了一个组合框,可以添加条目列表。我已经将这个组合框设置为可编辑和自动完成。问题如下 1) 我使用鼠标单击从下拉列表中选择了Arial值 2) 之后,我键入黑色,并从结果列表中使用enter按钮选择Arial black 3) 然后,我再次使用鼠标单击Arial值,Arial值被选中,但结果列表将再次显示,即使我选择了该值 我想隐藏点击鼠标选择值的结果列表。结果列表只是ComboBoxPopupControl。我试着用这个方法,但没用。单击comboBox.setOnAction,任何人都可以提供代码建议 这是密码javafx组合框可编辑自动完成,java,javafx,controlsfx,Java,Javafx,Controlsfx,我创建了一个组合框,可以添加条目列表。我已经将这个组合框设置为可编辑和自动完成。问题如下 1) 我使用鼠标单击从下拉列表中选择了Arial值 2) 之后,我键入黑色,并从结果列表中使用enter按钮选择Arial black 3) 然后,我再次使用鼠标单击Arial值,Arial值被选中,但结果列表将再次显示,即使我选择了该值 我想隐藏点击鼠标选择值的结果列表。结果列表只是ComboBoxPopupControl。我试着用这个方法,但没用。单击comboBox.setOnAction,任何人都可
java.util.ArrayList;
import java.util.List;
import org.controlsfx.control.textfield.TextFields;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
public class TestAutoTextSearch_bkp extends Application {
public static void main(String[] args) {
// TODO Auto-generated method stub
launch();
}
@Override
public void start(Stage primaryStage) throws Exception {
List<String> countries = new ArrayList<>();
countries.add("Arial");
countries.add("Arial Black");
countries.add("Arial Narrow");
ComboBox<String> comboBox = new ComboBox();
comboBox.getItems().addAll(countries);
ComboBox<String> comboBox1 = new ComboBox();
comboBox.setEditable(true);
comboBox.setMaxWidth(Double.MAX_VALUE);
comboBox.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//Tried dispose method here but dint worked[![enter image description here][1]][1]
}
});
comboBox.getEditor().setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
KeyCode kc = ke.getCode();
System.out.println("Inside Key Press");
if ((kc.isLetterKey())||kc.isArrowKey()||kc.equals(KeyCode.BACK_SPACE)) {
TextFields.bindAutoCompletion(comboBox.getEditor(), comboBox.getItems());
}}
});
Group root = new Group();
root.getChildren().add(comboBox);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
comboBox.setMinWidth(comboBox.getWidth());
comboBox.setPrefWidth(comboBox.getWidth());
}
}
java.util.ArrayList;
导入java.util.List;
导入org.controlsfx.control.textfield.TextFields;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.event.EventType;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.input.KeyCode;
导入javafx.scene.input.KeyEvent;
导入javafx.scene.input.MouseEvent;
导入javafx.stage.stage;
public class TestAutoTextSearch\u bkp扩展应用程序{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
发射();
}
@凌驾
public void start(Stage primaryStage)引发异常{
列表国家=新的ArrayList();
国家。添加(“Arial”);
添加(“Arial黑色”);
国家。添加(“Arial窄”);
ComboBox ComboBox=新建ComboBox();
comboBox.getItems().addAll(国家/地区);
ComboBox comboBox1=新建ComboBox();
comboBox.setEditable(真);
comboBox.setMaxWidth(Double.MAX_值);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
//尝试在此处使用处置方法,但力不从心[![在此处输入图像描述][1][1]
}
});
comboBox.getEditor().setOnKeyPressed(新的EventHandler()){
@凌驾
公共无效句柄(KeyEvent ke){
KeyCode kc=ke.getCode();
System.out.println(“内部按键”);
if((kc.isleterkey())| | kc.isArrowKey()| | kc.equals(KeyCode.BACK_空格)){
TextFields.bindAutoCompletion(comboBox.getEditor()、comboBox.getItems());
}}
});
组根=新组();
root.getChildren().add(组合框);
场景=新场景(根);
初级阶段。场景(场景);
primaryStage.show();
comboBox.setMinWidth(comboBox.getWidth());
comboBox.setPrefWidth(comboBox.getWidth());
}
}
您可以尝试使用小型实用程序库中的解决方案
如果用鼠标单击
Arial Black
,然后单击Arial
,就会发生这种情况。我猜它是想给你显示不同的选项,就像你在字段中键入一样。我是唯一一个试图把小窗口拖到一边的人吗?为图书馆做广告,你的?无论如何,请不要对多个问题给出相同的答案。发布一个好的答案,然后投票/标记以重复结束其他问题。如果问题不是重复的,请根据问题量身定做答案。谢谢你的建议。图书馆是我的。我在应用程序中使用它。它是免费的,所以我没有任何利润。
List<String> items = Arrays.asList("Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Neptune");
ComboBoxCustomizer.create(comboBox)
.autocompleted(items)
.customize();
ComboBoxCustomizer.create(comboBox)
.autocompleted(items)
.overrideToString(o -> "planet: " + o)
.multyColumn(o -> Arrays.asList("column 2", "column 3"))
.emphasized(o -> o.endsWith("s"))
.customize();