基于类中的Fields的Java GUI

时间:2014-09-16 18:24:34

标签: java user-interface

我需要在运行时基于类字段在Java中生成GUI。

我正在处理Web服务,所以我需要在客户端动态生成GUI。例如,如果我的网络服务上有一个包含String nameint numberArrayList<> list字段的类,我需要生成一个具有2 JTextField个s的GUI和一个JList

是否有任何API可以帮助我做到这一点?

2 个答案:

答案 0 :(得分:0)

你正在寻找一种“裸体对象”式的方法。

虽然这种方法非常适合获取某种初始GUI,但生成GUI的方式往往会使最简单的GUI更改需要更改驱动GUI生成的对象。

这往往与许多方法背道而驰,这些方法旨在最大限度地减少在需要新GUI功能时重写核心逻辑的需要。

既然你已经被警告了,如果你还想踩到这块地雷,我会告诉你的方式,在pseduocode

 public Component generateComponent(Object object) {
   Class c = object.getClass();
   Method[] m = c.getDeclaredMethods();
   for (int i = 0; i < m.length; i++) {
      if (m.getName().startsWith("get")) {
        Class returnClass = m.getReturnClass();
        if (returnClass.equals(String.class)) {
           add(new TextBox(...);
        }
      }
   }
 }

很快你就必须决定要包含/排除哪些方法,以及用于做出决定的机制。然后你必须决定如何呈现信息,你必须使新的JComponents列表更改以回调相关的“set ...”方法。

简而言之,这听起来是个好主意,直​​到你这样做。然后它成为你得到你所要求的而不是你想要的那些问题之一。

答案 1 :(得分:0)

我认为ReflectionUI是您想要的。它基于反射生成GUI。另外,您可以自定义生成的GUI。