Java JComboBox和JSpinner的区别

Java JComboBox和JSpinner的区别,java,swing,jcombobox,jspinner,Java,Swing,Jcombobox,Jspinner,我正在用JavaSwing编写一个Java桌面实用程序,其中有一个最小的GUI部分,大部分工作是在服务器端即后端完成的。所以,我不想在GUI部分花费太多时间,学习不同的控件和小部件。问题是Swing有两个控件用于(对我来说)相同的任务,即下拉菜单,它们是JComboBox和JSpinner,我不知道两者的区别,我不希望有任何限制妨碍我在选择一个后完成任务 我必须使用下拉菜单来显示从数据库返回的列表,它可以有多达数千个值。为了防止用户滚动,我将使用起始字母作为输入,或者会有一些类别限制,因此,我可

我正在用JavaSwing编写一个Java桌面实用程序,其中有一个最小的GUI部分,大部分工作是在服务器端即后端完成的。所以,我不想在GUI部分花费太多时间,学习不同的控件和小部件。问题是Swing有两个控件用于(对我来说)相同的任务,即下拉菜单,它们是
JComboBox
JSpinner
,我不知道两者的区别,我不希望有任何限制妨碍我在选择一个后完成任务

我必须使用下拉菜单来显示从数据库返回的
列表
,它可以有多达数千个值。为了防止用户滚动,我将使用起始字母作为输入,或者会有一些类别限制,因此,我可能会使用从
列表中显示的特定值。我希望我的程序尽可能高效,并且在前端花费最少的时间,因为后端有很多操作


我们将非常感谢您的帮助

JComboBox
符合您的要求<代码>JComboBox
适用于显示值列表。当您想要在微调器的文本字段上执行某些功能(如递增/递减)时,可以使用JSpinner

这解释了
JSpinner
及其与
JComboBox
的相似之处。还有一个演示应用程序。

  • 你在谈论什么

  • 通过一些努力(
    autocompletejtextfield
    )也可以应用到
    JSpinner

我必须使用下拉菜单来显示从数据库返回的列表,它可以有多达数千个值

  • 上述所有
    JComponents
    都基于不成熟数组,可能需要将
    java.util.List
    转换为
    String[]
    Vector
    (取决于您的代码逻辑)

  • 没有一个GUI被指定帮助数千个值,请查看数据库引擎的分页

  • 上面提到的
    AutoComplete JComboBox/JTextField
    在今天的PC上最多可以运行2k行,没有任何问题

  • 要从最大的数组中进行搜索或选择,请查看
    Stepped JComboBox
    (大约两个或更多
    JComboBox

    1.st用于从
    [0-9,A-Z]

    2.nd用于搜索使用启动的
    记录(例如)

  • 数据库
    事件重定向到后台任务,并使用
    SwingWorker
    Runnable#线程


关键的区别在于模型:实现创建一系列值,而实现不创建。如果
喷丝头模型中的对象没有合适的自然顺序,则需要强制执行

实际上,“数千个值”将受益于一种辅助方法,如@mKorbel的建议。

来自JSpinner标记wiki:“虽然组合框提供类似的功能,但微调器有时是首选的,因为它们不需要可能掩盖重要数据的下拉列表。”