Java 如何分割组合框ObservableCollection中的值
在我的应用程序JavaFX中,我在一个组合框中显示几个用户,数据库中有两个表(名称和姓氏),我将用户存储在ObsersableCollection中。 但是在我想要分割实际选择用户的姓名和姓氏之后,在组合框中获取关于实际选择用户的其他信息 如何知道在组合框中选择的值:Java 如何分割组合框ObservableCollection中的值,java,arrays,list,javafx,observablecollection,Java,Arrays,List,Javafx,Observablecollection,在我的应用程序JavaFX中,我在一个组合框中显示几个用户,数据库中有两个表(名称和姓氏),我将用户存储在ObsersableCollection中。 但是在我想要分割实际选择用户的姓名和姓氏之后,在组合框中获取关于实际选择用户的其他信息 如何知道在组合框中选择的值: @覆盖 公共void初始化(URL arg0,ResourceBundle arg1){ //地方党 选择locataire(); listLocataire.valueProperty().addListener(新的Chang
@覆盖
公共void初始化(URL arg0,ResourceBundle arg1){
//地方党
选择locataire();
listLocataire.valueProperty().addListener(新的ChangeListener(){
@凌驾
public void已更改(@SuppressWarnings(“rawtypes”)observeValue ov,字符串t,字符串t1){
LocataireInfo();
}
});
listLocataire.setItems(locataireList);
}
我的班级选择Locataire;在这里,我重复显示组合框中显示的所有姓名
public void SelectLocataire(){
试一试{
Connection conn=DriverManager.getConnection(Cste.url、Cste.login、Cste.passwrd);
语句stmt=conn.createStatement();
结果集rs;
rs=stmt.executeQuery(“从位置选择*);
while(rs.next()){
nomUser=rs.getString(“nom”);
prenomUser=rs.getString(“prenom”);
locataireList.add(nomUser+“”+prenomUser);
}
康涅狄格州关闭();
}捕获(例外e){
}
}
LocataireInfo()是我尝试恢复数据库中其他信息的地方,用户在组合框中选择
public void LocataireInfo(){
试一试{
Connection conn=DriverManager.getConnection(Cste.url、Cste.login、Cste.passwrd);
语句stmt=conn.createStatement();
结果集rs;
rs=stmt.executeQuery(“从位置选择*,其中nom=”“+nomUser+””);
while(rs.next()){
civiliteUser=rs.getString(“Civilite”);
adresseUser=rs.getString(“Adresse”);
codePostalUser=rs.getString(“Codepostal”);
villeUser=rs.getString(“Ville”);
telFUser=rs.getString(“TelF”);
telPUser=rs.getString(“TelP”);
faxUser=rs.getString(“传真”);
emailUser=rs.getString(“电子邮件”);
}
康涅狄格州关闭();
//关于gére-les例外
}捕获(例外e){}
//在一辆四轮马车上
nom.setText(nomUser);
prenom.setText(prenomUser);
adresse.SETEXT(adresseUser);
codePostal.setText(codePostalUser);
维尔·塞特克斯(维勒塞尔);
telF.setText(telFUser);
telP.setText(telPUser);
fax.setText(faxUser);
email.setText(emailUser);
observations.setText(observationsUser);
civilite.setText(civiliteUser);
}
因此,我无法通过变量nomUser进行恢复,因为它是我需要执行的数据库si中的最后一个用户:myList.valueProperty();
她返回:“name姓氏”,我希望在恢复数据库中的其他信息后进行拆分
感谢要解决目前的问题,您可以:
// Handle error checking appropriately and probably need a better split based on your possible names
// for example "jon le snow" would not give you what you want.
listLocataire.valueProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(@SuppressWarnings("rawtypes") ObservableValue ov, String t, String t1) {
String[] nom = t.split(" "); // "given surname" -> ["given","surname"];
LocataireInfo(nom[1]);
}
});
你在哪里使用
ComboBox<Person> comboBox = new ComboBox<>();
comboBox.setStringConverter(new StringConverter<Person>() {
@Override public toString(Person person) { return person.nom + " " person.prenom;
@Override public fromString(String str) { ... }
});
ComboBox-ComboBox=新的ComboBox();
comboBox.setStringConverter(新StringConverter(){
@重写公共toString(Person){return Person.nom+“”Person.prenom;
@重写公共fromString(String str){…}
});
及
listLocataire.valueProperty().addListener(新的ChangeListener()){
@凌驾
公共无效已更改(@SuppressWarnings(“rawtypes”)observeValueOV,Person t,Person t1){
地点信息(人);
}
});
问题到底是什么?myList.valueProperty()与您的问题有什么关系?我希望使用组合框中选择的值恢复数据库中的信息,因此如果组合框中有John Snow(姓氏和姓名)。我希望在一个变量中拆分John,在另一个变量中拆分Snow,以便从MyTable中发送SQL请求,如SELECT*,其中Name=ValueInComboBox和昵称=ValueInComboBox。如果您有任何解决方案可以在comboBox中显示,并使用SELECT user Like和ID恢复数据库中的其他信息,我接受:)请提供其他代码关于有问题的流程。我在主要帖子中添加了更多关于代码和描述的详细信息。没有足够的信息来帮助您。
ComboBox<Person> comboBox = new ComboBox<>();
comboBox.setStringConverter(new StringConverter<Person>() {
@Override public toString(Person person) { return person.nom + " " person.prenom;
@Override public fromString(String str) { ... }
});
listLocataire.valueProperty().addListener(new ChangeListener<Person>() {
@Override
public void changed(@SuppressWarnings("rawtypes") ObservableValue ov, Person t, Person t1) {
LocataireInfo(Person);
}
});