当前位置: 首页 > 知识库问答 >
问题:

如何将列表/地图与组合框一起使用

上官高逸
2023-03-14

我正在尝试为java应用程序制作一个表单。它包含一个带有用户列表的组合框。假设我有一个类教授,有3个属性。Id是“唯一的”,这是数据库所必需的。

public class Professor
  private String id;
  private String lastName;
  private String firstName;

我认为最用户友好的选项是在组合框中填写“教授”类的姓氏和名字,这就是我所做的。但是现在我不知道如何取回教授对象。

就像我说的,我用姓氏、空格和名字填充了组合框,但是一旦用户选择了教授,我不知道如何选择用户选择的教授。

有什么方法可以在Combobox中放入一个索引和一个值吗?第一选择是约翰·史密斯,第二选择是简·亚当斯...我已经尝试使用一个地图集合,一个“id”属性的列表,但是我似乎不知道如何链接2。

任何帮助将不胜感激。

编辑:找到答案。最简单的解决方案是用自定义类填充组合框,这里是“教授”对象。我认为这是不可能的,但显然确实如此。将 toString() 方法添加到类中,并添加所需的内容。在我的情况下,姓氏名字。向其添加@Override批注,它将在组合框中显示,同时仍可让您轻松访问任何属性。

共有2个答案

蒋鸿文
2023-03-14

你正在使用哪种组合框?我猜是JCombobox。无论如何,我建议你阅读API。对于JCombobox,它是http://docs . Oracle . com/javase/8/docs/API/javax/swing/JCombobox . html。http://docs . Oracle . com/javase/8/docs/API/javax/swing/jcombobox . html # getSelectedIndex-Get selected objects http://docs . Oracle . com/javase/8/docs/API/javax/swing/jcombobox . html # getselected objects-etc。

海宁
2023-03-14

你的问题中有两个不同的问题:

  1. 在组合框中对您的教授进行用户友好的表示(John Doe而不是Professor@71c3cfdd
  2. 从组合框中取回所选对象。

对于第一个问题,我将创建一个StringConverter,它将把您的Professor对象转换为人类可读的字符串。

实施示例:

public class ProfessorConverter extends StringConverter<Professor> {

     @Override
     public Professor fromString(String professorAsString) {
         // Create a professor from a string, e.g. (assuming that
         // the professorAsString as the form "1 John Doe"
         String[] pieces = professorAsString.split(" ");
         return new Professor(pieces[0], pieces[1], pieces[2]);
     }

     @Override
     public String toString(Professor professor) {
         // Converts your professor to a String of type "John Doe"
         return professor.getFirstName() + " " + professor.getLastName();
     }

}

然后将ProfessorConverter的实例分配给ComboBox:

box.setConverter(new ProfessorConverter());

对于第二个问题,您可以使用ComboBox对象的selectionModel来获取所选对象(您要返回的对象类型由您在ComboBox声明中使用的泛型指定,即ComboBox

Professor selectedProfessor = box.getSelectionModel().getSelectedItem();

将返回选定的教授,如果没有选择教授,则返回< code>null

为了填充ComboBox,我使用FXCollection的实用方法从“普通”java列表创建一个新的观察者列表

List<Professor> myListOfProfessors = ... ;
box.setItems(FXCollections.observableList(myListOfProfessors));

希望它能帮助:)

 类似资料:
  • 问题内容: 我们的处理器将一个(有效地传递)返回给我们。 现在,我们观察到尚未编程处理。我们还观察到处理instanceInstanceof ;我们需要编写一个自定义。 但可悲的是,它返回时只能处理一个,又不能处理a 。 因此,有人可以帮助我们了解如何处理中的列表吗? 问题答案: 通常,设计模式为: 如果处理器返回,则需要Writer期望。 您可以通过将您的委托包装在看起来像这样的ItemWrit

  • 如何将Restrictions.in与列表字段一起使用? 这是我的模型: 我尝试只获取具有某些功能的组: 但这会返回一个错误: 引起原因:org.hibernate.exception.GenericJDBCExc0019:在索引:: 1缺少IN或OUT参数org.hibernate.exception.internal.在org.hibernate.engine.jdbc.spi.SqlExce

  • 我有一个映射集合,其中包含productId、数量和订单数量的列表,格式为productId=[quantity,no of orders]。地图收藏就像 对于每个productId,都有数量和数量的订单。代码是用java返回的。我的要求是,我想将订单的ProductID、数量和编号分成3个不同的列表,如 订单的数量和编号应该与它们相关的产品Id相匹配。我如何在java中实现这一点?

  • 问题内容: 我在Django中有一些REST API端点,我想对Graphene使用相同的身份验证。该文档不提供任何指导。 问题答案: 例如,如果在API视图中使用,则可以将端点添加到以这种方式装饰的GraphQLView中: urls.py: 请注意,我们添加了一个新的端点,并保留了GraphiQL工具使用的原始端点。 然后,您应该在GraphQL客户端中设置标头并指向端点。 更新:请参阅此Gi

  • 问题内容: 如何将作为地图的属性序列化为地图的值列表?我已经能够使用吸气剂上的注释进行其他简单的转换。但是,我不确定我想做什么。 问题答案: 我们需要类似的东西,在我们的案例中,我们使用了您所评论的自定义项,这很简单: 使用它的代码:

  • 我在工作表上使用“生成”按钮。当我单击按钮时,会出现一个弹出窗口(表单),其中包含两个组合框。根据第一个组合框中的选择,填充第二个组合框选项列表。 对于第一个组合框,当我对项目值进行硬编码时,它工作正常。表单代码如下: 我尝试使用以下表单代码从Excel工作表中的列中获取组合框项目值,从而使此项目列表动态化: 但是上面的代码抛出错误:运行时错误“1004”:对象“_Global”的方法“范围”失败