2012-09-10 72 views
8

我正在Java swing中编写一个Java桌面实用程序,并且其中包含最少的GUI部分,大部分工作都在服务器端(即后端)完成。所以,我不想在GUI部分花费大量时间,学习不同的控件和小部件。问题是,Swing有两个控制(对我来说)相同的任务,即下拉菜单,它们是JComboBoxJSpinner我不知道区别,我不希望任何限制阻止我完成我的任务后,已经选择了一个。JComboBox和JSpinner的区别

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

任何帮助将高度赞赏

+1

来自JSpinner标签wiki:“虽然组合框提供了类似的功能,但是有时候首选spinners,因为它们不需要可以隐藏重要数据的下拉列表。” –

回答

4

我已经使用下拉菜单来显示列表从数据库中返回它可以有多达数千个值。

  • 上述所有JComponents基于过早阵列上,也许需要java.util.List转换为String[]Vector(取决于你的代码逻辑的)

  • 没有GUI的被指定为helt数千值,看看Paginations for Databases engine

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

  • 从largiest阵列搜索或选择你看看Stepped JComboBox(约两个或两个以上JComboBoxes

    1.st用于降低选择从[0-9, A-Z]

    2。第二在记录搜索开始with A(例如)

  • 重定向Database事件到后台任务和使用SwingWorkerRunnable#Thread

2

JComboBox适合你的需求。 JComboBox适合显示值的列表。当您想要在Spinner的文本字段上执行一些功能(例如增量/减量)时使用JSpinner。

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

4

关键的区别在于模式:SpinnerModel实现创建一个数值的序列,而ComboBoxModel没有。如果SpinnerModel中的对象没有合适的自然顺序,则需要强加一个。

实际情况下,“数千个值”将受益于@ mKorbel的answer中提出的辅助方法。