我需要在运行时基于类字段在Java中生成GUI。
我正在处理Web服务,所以我需要在客户端动态生成GUI。例如,如果我的网络服务上有一个包含String name
,int number
和ArrayList<> list
字段的类,我需要生成一个具有2 JTextField
个s的GUI和一个JList
。
是否有任何API可以帮助我做到这一点?
答案 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。