0

到目前为止,我一直在使用 PHP 和 JavaScript 进行开发。我目前正在学习 groovy,但不幸的是,关于这种语言的教程并不多,而且我目前正在阅读的书(Groovy 食谱)不包含任何关于使用 groovy 的 swingbuilder 的内容。

作为一个工作项目,我想创建一个类似于下面架构的表:

                                      Instancename 

groupId      artifactId               DEV     TEST   PROD            

firstgroup   firstartifact            1.00    1.05   1.05
secondgroup  secondartifact           2.02    2.00   2.00

这是我当前的代码:

import groovy.swing.SwingBuilder
import java.awt.BorderLayout

public class Gui {

 public void createGui(String instanceTitle, ArrayList<Artifact> columnData){

  def bldr = new groovy.swing.SwingBuilder();

  def frame = bldr.frame(
   title: "Overview",
   size: [600,150],
   defaultCloseOperation:javax.swing.WindowConstants.EXIT_ON_CLOSE
  ){  
   def tab = table(constraints:BorderLayout.CENTER) {
    tableModel(list:columnData) {
     propertyColumn(header:'GroupId', propertyName:'groupId')
     propertyColumn(header:'ArtifactId', propertyName:'artifactId')
     propertyColumn(header:'Dev', propertyName:'devVersion')
     propertyColumn(header:'Test', propertyName:'testVersion')
     propertyColumn(header:'Prod', propertyName:'prodVersion')
    }
   }
   widget(constraints:BorderLayout.NORTH, tab.tableHeader)
  }
  frame.pack()
  frame.show();

  }

}

当我运行它时,我的表格中填满了我的数据。我的问题是,我如何才能将“DEV”、“TEST”和“PROD”从属于“Instancename”?我不知道如何在其他标题上方添加标题。在 html 中,它看起来像这样:

<table>
 <tr>
  <td colspan="2"></td>
  <td colspan="3">Instancename</td>
 </tr>
 <tr>
  <td>groupId</td>
  <td>artifactId</td>
  <td>DEV</td>
  <td>TEST</td>
  <td>PROD</td>
 </tr>
 <tr>
  <td>firstgroupid</td>
  <td>firstartifactid</td>
  <td>firstdevversion</td>
  <td>firsttestversion</td>
  <td>firstprodversion</td>
 </tr>
 ...
</table>

PS:如果你知道一些好的 groovy 教程,请告诉我 :)

4

1 回答 1

1

我认为这更像是一个 Swing 问题,而不是一个时髦的 Swingbuilder 问题。

没有像在 HTML 中那样定义表头的简单方法。

这是一个示例,说明您如何使用 Swing 在 Java 中执行此操作,但它已有 11 年历史,我不相信它可以与 Java 1.5+ 一起使用...

事实上,在(现在是 kaput)sun java 论坛上有一个关于如何让这段代码在 Java 1.5+ 下运行的旧修复程序

然而,这并不是我记得见过的真正的 UI 模式(即使在 HTML 中很容易),所以显示数据的不同方式可能会更好(或者至少更容易被最终用户识别)?

于 2010-12-29T22:25:17.320 回答