代码之家  ›  专栏  ›  技术社区  ›  Cratylus

通过描述文件创建java gui的方法?

  •  0
  • Cratylus  · 技术社区  · 14 年前

    我对GUI有以下要求,即用户将有许多可用的操作要执行。
    目前,它实现了一系列用户按下的jbutton。
    但是动作是很多的,在每个版本中都可能提供更多的“动作”。
    我不确定如何在GUIs中更好地呈现/完成这项工作。
    我已经读过一些方法可以形成一个gui,在xml文件中描述相关信息。
    我正在使用Netbeans和swing。xml是一个好主意吗?它可以描述可用的操作,例如创建相同数量的按钮?如果是的话,我该怎么开始呢?另外,jtoobar对这些操作来说是个好主意吗?我的意思是在Jtoolbar中添加尽可能多的按钮。

    谢谢您。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Community Ian Goodfellow    7 年前

    似乎涉及两个不同的问题:

    1. 如何在GUI中表示大量的动作?

    @Tom's answer 是为1,和 @Fabio's

    您可以为#1、xml、csv使用任何文本格式,无论您喜欢什么。把它和代码分开确实是个好主意。XML非常适合层次化数据,因此如果您只需要一个简单的列表,它可能会被过度破坏:

    <doc>
      <action name="Action 1" id="ACT1" description="blah blah" icon="icon1.gif"/>
      <action name="Action 2" id="ACT2" description="yada yada" icon="icon2.gif"/>
      ...
    </doc>
    

    但是解析这样一个简单的XML基本上是免费的,所以您不妨直接使用它。你知道的 但是,需要一个功能齐全的XML GUI工具包,比如SwiXML,除非您想在应用程序中添加许多其他布局复杂的GUI小部件。

    id description icon (我想你已经用了图标)任何你想要的方式。您还可以拥有其他属性,如助记符、加速器等,这时使用XML开始有了回报:您可以添加所需的任意属性。

    XML中一个明显的遗漏是实际操作本身。我愿意 AbstractAction )并将它们与动作id映射。如果你真的用 抽象行为 ,您可以简单地将属性映射到操作属性键,如 Action.NAME Action.LONG_DESCRIPTION 等等。


    现在,您已经将XML解析为一个动作对象列表,接下来的第二个问题是:如何显示它们?

    JList (per@Fabio)确实是最有效的方法。它比一堆单独的按钮要紧凑得多,但是不像 JComboBox

    但清单不是很灵活。你可以用一个 ListCellRenderer 以显示图标和工具提示(用于说明),但当您要对项目进行分组时,将开始拉伸图标和工具提示。

    我认为最灵活的方法是树表,它允许您具有多级层次结构。可以从两列开始,第一列按层次结构显示操作名,第二列显示说明。

    您可以将表放在可折叠的面板中,以便在用户希望关注结果时隐藏它。

    现在w.r.t。 JToolBar ,你说得对,它是标准的,但是正如Fabio的评论所指出的,当你在工具栏上有太多的按钮(比如M$Word before ribbon)时,它的可用性很差。

    不幸的是,我上面提到的许多GUI结构 JDK提供。您可以从优秀的商业广告中找到所有这些(树表、搜索/筛选、可折叠面板、可自定义工具栏等) JIDE 图书馆(免责声明:我不为他们工作,尽管有时我希望这样做),或者你可以找到自由/开源软件的替代品。

        2
  •  1
  •   Fabio    14 年前

    我不知道我是否理解你的问题,但在我看来,JButton方法并不是最有效的方法。想象一下,动作的数量开始变得很大,画太多的按钮会导致一个不直观、不吸引人的界面。另一种方法是使用JComboBox或JList,列出所有不需要太多空间的操作,并使用一个按钮“do!”执行动作。

    我希望它有用;)

        3
  •  0
  •   Tom Hawtin - tackline    14 年前

    与十年前流行的观点相反,XML通常不是一个好主意。用Java来表达这种“编程”的合适语言。