在MS Access中,'ListBox'可以隐藏一个2列结果集的第一个'column'--它非常适合隐藏'ID',当用户从列表中选择一个项目时,IDS很容易访问。
如果可能的话,我希望在JavaFX中用ListView做同样的事情,这样我就可以根据第一个ListView中的选择填充第二个ListView。
以下是我填充ListView的方式:menulist1.setItems(MenuUtilities.getDivisions());
从
public static ObservableList getDivisions() {
ObservableList divisionListRow = FXCollections.observableArrayList();
try {
Connection conn;
conn = Connect_db.getConnection();
String query = "SELECT ID, Division FROM tbl_ref_employee_divisions";
PreparedStatement prestate = conn.prepareStatement(query);
ResultSet divsResult = prestate.executeQuery();
while (divsResult.next()) {
for (int i = 1; i <= divsResult.getMetaData().getColumnCount(); i++) {
divisionListRow.add(divsResult.getString(i));
}
}
prestate.close();
divsResult.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return divisionListRow;
}
多谢
您访问resultset
的方式是为每一行为每列添加一个元素。您需要为要在ListView
中显示的每一行添加一个项目,即在本例中,在ResultSet
中每一行添加一个项目。
因为您希望ID
是可访问的,所以应该创建一个自定义类型,包含两行的值(或者使用现有的类,如pair
),并使用cellfactory
选择要显示的数据。
public class EmployeeDivision {
private final long id; // or maybe String/int as type?
private final String name;
public EmployeeDivision (long id, String name) {
this.id = id;
this.name = name;
}
/* getters */
}
ListView<EmployeeDivision> menuList1;
menuList1.setCellFactory(lv -> new ListCell<EmployeeDivision>() {
@Override
protected void updateItem(EmployeeDivision item, boolean empty) {
super.updateItem(item, empty);
setText(empty || item == null ? "" : item.getName());
}
});
while (divsResult.next()) {
divisionListRow.add(new EmployeeDivision(divsResult.getLong(1), divsResult.getString(2)));
}
这允许您访问所选项目的id,如下所示:
EmployeeDivision selectedItem = menuList1.getSelectionModel().getSelectedItem();
if (selectedItem != null) {
System.out.println("id = " + selectedItem.getId());
} else {
System.out.println("no item selected");
}
AccessibilityService在系统的内存管理方面与普通服务有何不同? 我想问的是:系统可以为了节省内存而关闭AccessibilityService吗?如果可以,当您进入AccessibilityService时,您会看到它打开还是关闭?用户是否必须再次手动打开? 使用startForeground是否有助于使AccessibilityService保持活动状态? 在一个类似的问题中,
问题内容: 如果HTML元素样式的属性设置为,它是否仍可单击? 当该属性设置为时,该元素甚至都不是DOM树的一部分,因此这不是问题。但是我想知道一个元素是否仍然响应鼠标事件。 问题答案: 随着它 是 仍然DOM的一部分。只是没有在视口中渲染。 至于点击元素,则 不会 触发事件。
问题内容: 我想在显示旨在在建筑大厅中显示信息的网页时隐藏光标。它根本不需要是交互式的。我尝试使用cursor属性和透明的光标图像,但是没有使它起作用。 有人知道这是否可以做到吗?我想这对于不知道他在哪里单击的用户来说可以看作是安全威胁,所以我不太乐观……谢谢! 问题答案: 使用CSS: 一个例子: 要在Javascript中的元素上设置此属性,可以使用属性: 如果要对整个身体进行设置: 但是,请
问题内容: 这是我的代码,我基本上只是为最常见的侦听器做了一个测试器,以后我可能会在以后的项目中使用它,主要的问题是在底部的键侦听器中,我试图重新显示框架,但我认为只是无法做到这一点,请帮助ps:不知道为什么进口不正确。 } 问题答案: 可见组件可以具有键盘焦点,并且可以接收键盘和其他输入事件,但是不可见组件不能具有焦点,也不能接收输入事件。使框架不可见时,它停止接收输入事件,包括所有要添加的组件
寻找Reactor调度程序的指导。 我想在后台运行某些IO任务,即向技术团队发送电子邮件。为了使其异步,我使用Mono。fromRunnable订阅了调度程序。 我可以选择使用 Schedulers.elastic() 或 Schedulers.newElastic()。我更喜欢后者,因为它允许我给它一个唯一的名称,这将有助于日志分析。 做一个静态变量可以吗? 在Mono上订阅它,而不是每次都要创
问题内容: 是否可以取消使用隐藏iframe的文件上传? 我尝试将iframe的源设置为空字符串,但上传并未中断。 问题答案: iframe是承载表单过帐的传输渠道,因此Atanas是正确的,您必须停止iframe内部的传输。 这是一种取决于浏览器的方法: