【问题标题】:JComboBox with static options带有静态选项的 JComboBox
【发布时间】:2013-07-28 13:38:39
【问题描述】:

我正在寻找一个 Java Swing 组合框,它可以让我在可选列表中拥有 静态 选项。我的近期目标是:我需要一个底部带有“添加新”选项的组合框,但添加新选项将始终可见(即,它将从组合框的滚动窗格中排除)。

我使用了来自 Asana 项目管理的片段来说明:

这是一个自动完成的文本框/项目组合框。 Item 2Item 1Item 3都是以前用过的,但是如果你需要另一个标签,你选择 NEW TAG 始终可见。

有谁知道那里有任何可以实现此功能的库?如果不是,我正在考虑自己创建它,尽管我对 Swing 的了解还不够深,不足以解决这个明显的问题。

【问题讨论】:

  • 最简单的方法是在组合框旁边设置一个打开对话框的按钮,否则您必须开始扩展组合框并覆盖绘图方法,它很快就会变得复杂。
  • 或者不使用jcombobox,使用jtextcomponent,下面有jwindow,然后在jwindow中添加面板
  • 好吧,我至少受到鼓舞,因为你们俩都谈到了我目前对这个问题的解决方案。 :) 目前,我显示了一个带有“添加新”按钮的无边框窗口。但是,在适当的时候显示/隐藏按钮需要很多代码,而且在聚焦按钮、按下按钮等方面更加复杂。我已经为一个组合框完成了,我希望其余的更优雅的解决方案。由于屏幕空间问题,始终可见的组合框不是一个选项。

标签: java swing autocomplete jcombobox


【解决方案1】:

我这里没有代码,但是当我制作我的自动完成组件时,我会用一些指导 这个JSuggestField。我用更多的功能把它做得更大一点,但它可能对你有帮助。 您可以使用合成来装饰文本字段自动完成功能,而不是扩展。

您有一个 JTextField ,在 JTextField 下方有一个 JWindow ,在 jwindow 中您可以放置​​自己的布局并在下方放置一个 jpanel。

【讨论】:

  • 我实际上已经实现了JWindow 解决方案(在JWindow 中使用JButton),但在我的情况下它很笨拙且不可重复使用。也许我应该完善该解决方案并使其适合可重用性。老实说,我遇到的自动完整解决方案也不尽如人意(我在看着你,SwingX)所以也许这将是一个富有成果的项目。
  • 这是我第一次看到这样的 GUI 元素,并且认为它的实用性(一般而言)太有限或太专业,无法引起 SwingX 人的兴趣。当然,我不是他们中的一员,不应该代表他们发言,但这是我的最佳猜测。
  • @AndrewThompson,是的,它是专业的,但是我从事的项目越多,我就越开始看到最终用户对应用程序中元数据的控制发生了转变。我当前的应用程序主要基于用户控制的元数据(即组合框中出现的内容),我的第一种方法是为这些对象的 CRUD 提供单独的窗口,但我的客户想要更多:使用输入或创建的内容的能力动态的新元数据。这正在成为我开发领域的常态,Asana PM 是此类应用潜力的一个很好的例子。
  • “我的客户想要更多” 是的,同意。这是用户非常普遍的属性。所以我现在明白你的意思了。希望对你来说一切顺利。 :) 嘿,如果你想出一个很好的实现 1) 回答你自己的问题。 2) 提交给 SwingX! RFE 的一个重要(非常有说服力)的部分是工作源代码。 ;)
  • @AndrewThompson,我为此找到了另一个实际应用程序(以表明它不是太具体):gmail。 :) i.imgur.com/FVocgCW.png
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多