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

时间:2010-10-12 20:07:03

标签: java user-interface swing

我对GUI有以下要求,即用户将有许多可用的操作要执行 目前,它实现了用户按下的一系列JButton 但是行动很多,并且在每个版本中都可能提供更多的“行动” 我不确定如何在GUI中更好地呈现/完成 我已经读过有很多方法可以在xml文件中形成描述相关信息的gui 我正在使用Netbeans和摇摆。 xml是一个好主意,描述可用的操作,例如创建相同数量的按钮?如果是的话,我将如何开始呢?另外,jtoobar对于这些行动是个好主意吗?我的意思是在Jtoolbar中根据需要添加尽可能多的按钮 我想这是一个普遍的问题,但我没有GUI经验。 任何帮助将不胜感激!

谢谢。

3 个答案:

答案 0 :(得分:1)

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

我希望它有用;)

答案 1 :(得分:1)

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

  1. 如何描述和创建大量动作?
  2. 如何在GUI中表示大量操作?
  3. @Tom's answer代表#1,@Fabio's代表#2。

    您可以使用#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将映射到唯一的操作命令。您可以以任何方式显示descriptionicon(我想您已经使用了图标)。您还可以使用其他属性,如助记符,加速器等,此时使用XML开始获得回报:您可以添加所需的任意属性。

    XML中的一个明显遗漏是实际操作本身。我认为你应该把Java代码放在XML中。它打破了关注的分离。相反,您可以通用方式定义操作代码(例如,扩展AbstractAction)并使用操作ID映射它们。如果您使用AbstractAction,则可以将属性简单地映射到动作属性键,例如Action.NAMEAction.LONG_DESCRIPTION等。


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

    JList(每@Fabio)确实是最有效的方式。它比一大堆单个按钮更紧凑,但与JComboBox不同,您可以同时看到许多项目,并且您可以轻松添加排序/搜索/过滤器。

    但是列表不是很灵活。您可以使用自定义ListCellRenderer来显示图标和工具提示(用于说明),但是当您要对项目进行分组时,您将开始拉伸它。

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

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

    现在w.r.t。 JToolBar,你说它是标准的,但正如Fabio的评论所指出的那样,当你在工具栏上有太多的按钮时(如功能区之前的M $ Word),它的可用性很差。

    然而,对工具栏的一个很好的用途是允许用户将他们选择的动作放在工具栏上,就像大多数流行的桌面应用程序一样。您可以使用“自定义工具栏”对话框,或者只是让用户从列表或表格中拖放项目。

    不幸的是,我在上面提到的许多GUI结构都是而不是在JDK中可用。您可以从优秀的商业JIDE图书馆找到所有这些(树状表,搜索/过滤器,可折叠面板,可自定义的工具栏等)(免责声明:我不为他们工作,尽管我有时希望我这样做),或者你可以找到FOSS替代品。

答案 2 :(得分:0)

与大约十年前流行的看法相反,XML通常不是一个好主意。表达这种“编程”的适当语言是Java。