我有一个包含机场的数据库表,每个机场都有一个名称和一个ID。
在JavaFX中,我有一个带有的表单,ComboBox
组合框需要显示所有机场名称,并且在提交表单时需要将机场的ID插入数据库(而不是其名称)。
但是我并没有真正弄清楚解决方案是什么。
我有一个
ObservableList vliegveldenList = FXCollections.observableArrayList();
ObservableList vliegveldenIDList = FXCollections.observableArrayList();
数据库连接填充 ComboBox
ResultSet rs = Project_Fasten_Your_Seatbelt.conn.createStatement()
.executeQuery("SELECT vliegveldnaam, vliegveld_id FROM fys_project.vliegvelden;");
while (rs.next()) {
vliegveldenList.add(rs.getString(1));
vliegveldenIDList.add(rs.getString(2));
}
填充组合框:
vliegveldHerkomst.setValue("Luchthaven ...");
vliegveldHerkomst.setItems(vliegveldenList);
并在按下按钮时将其添加到数据库中:
String registratieValue = registratieNmrTxt.getText();
String vluchtValue = vluchtNrmTxt.getText();
String vliegveldValue = (String) vliegveldHerkomst.getSelectionModel().getSelectedItem();
String bestemmingValue = (String) vliegveldBestemming.getSelectionModel().getSelectedItem();
String gevondenValue = (String) vliegveldGevonden.getSelectionModel().getSelectedItem();
LocalDate dGevondenValue = datumGevondenDate.getValue();
LocalDate dVluchtValue = datumVluchtDate.getValue();
String gewichtValue = gewichtBagageTxt.getText();
String kleurenValue = (String) kleuren.getSelectionModel().getSelectedItem();
String kofferValue = (String) kofferMerken.getSelectionModel().getSelectedItem();
String opmerkingValue = opmerkingArea.getText();
//Data gevonden bagage invoeren
Project_Fasten_Your_Seatbelt.conn.createStatement().executeUpdate(
"INSERT INTO gevondenbagage "
+ "(registratienummer, datumgevonden, datumaangemeld, vliegveldherkomst, "
+ "vliegveldbestemming, vliegveldgevonden, vluchtnummer, vluchtdatum, gewicht, "
+ "kleur, merk, `speciale opmerkingen`, userid)"
+ "VALUES ('" + registratieValue + "','" + dGevondenValue + "','" + today.format(localDate) + "','"
+ vliegveldValue + "','" + bestemmingValue + "','" + gevondenValue + "','"
+ vluchtValue + "','" + dVluchtValue + "','" + gewichtValue + "','"
+ kleurenValue + "','" + kofferValue + "','" + opmerkingValue + "','"
+ Project_Fasten_Your_Seatbelt.getUserId() + "')");
一切正常,但是我要为设置机场的ID,而不是机场的名称vliegveldValue
。
我该怎么做呢?
您可以创建一个如AirPort
带班ID
和name
成员以及ComboBox
该显示这些对象:ComboBox<AirPort>
。
AirPort
班级:
public class AirPort {
private int ID;
private String name;
public AirPort(int id, String name) {
this.ID = id;
this.name = name;
}
public int getID() { return ID; }
public String getName() { return name; }
}
从数据库中获取项目并创建ComboBox
:
// Fill the list from the DataBase
ObservableList<AirPort> airports = FXCollections.observableArrayList();
airports.addAll(new AirPort(0, "Heathrow"),
new AirPort(1, "Frankfurt"),
new AirPort(2, "NewYork"));
ComboBox<AirPort> combo = new ComboBox<>();
combo.setItems(airports);
最后要显示对象的名称,您可以使用例如StringConverter
:
combo.setConverter(new StringConverter<AirPort>() {
@Override
public String toString(AirPort object) {
return object.getName();
}
@Override
public AirPort fromString(String string) {
return combo.getItems().stream().filter(ap ->
ap.getName().equals(string)).findFirst().orElse(null);
}
});
然后,当值更改时,您将获得AirPort
包含所需ID的对象:
combo.valueProperty().addListener((obs, oldval, newval) -> {
if(newval != null)
System.out.println("Selected airport: " + newval.getName()
+ ". ID: " + newval.getID());
});
问题内容: 我觉得应该有一个简单的方法来做到这一点,但我不知道。我有一个JFileChooser,它允许用户选择目录。我想显示目录中的所有文件,以便为用户提供一些上下文,但是只应接受目录作为选择(选择文件时可能会禁用“打开”按钮)。有一个简单的方法吗? 问题答案: 重写approveSelection()方法。就像是:
我使用此代码在表单中设置select。 我检查时的html部分似乎具有适当的值,并将文本放在那里。 但是在屏幕上,选择框是空的,不显示文本。 我也试图将文本放在跨度选项中,但它也不起作用
我正在尝试编写一些相当基本的代码,但多年来没有接触过JavaScript,我真的不确定最好的方法是什么。 目标:有一个42个竞技场部分数字的下拉列表,当选择这些数字时,将根据该数字显示“红色”或“黑色”。为了提供过多信息,部分编号是: 黑色:103, 105, 107, 111, 113, 115, 119, 121, 123, 127, 129, 131, 201, 203, 205, 207,
问题内容: 我一直在网上寻找这个东西,甚至甚至找不到其他人问这个,更不用说解决方案了…… 选择文本后,是否可以更改文本输入中突出显示区域的颜色?不是突出显示边框或背景,而是当您实际选择文本时出现在文本周围的部分。 问题答案: 感谢您提供的链接,但似乎并没有公开实际突出显示的文本。 就当前的实际问题而言,我最终选择了一种不同的方法,因为完全不需要文本输入,并使用了带有某些JavaScript的inn
app.py reg_account.html 错误: 我想让的结果在中的复选框未选中时返回False,但我不明白为什么当我勾选了该复选框时,结果可以存储到数据库中?我试着调试了几次,但还是找不到一个可能的解决方案,所以有没有人可以帮忙?
在一个应用程序屏幕上,我有许多EditText视图。我的应用程序是使用材料设计(AppCompactActivity等)构建的。 当显示一个EditText字段时,长按我会尝试选择文本中的一些单词。这允许我复制或共享该文本。选择一个以上的单词似乎是不可能的。 自从迁移到材质设计之后,我看到了两件事: 是的,我使用'android:textisselectable=“true”‘。您可以在下面看到E