在运行时期间动态地向JPanel添加组件

COD*_*BOY 2 java user-interface

在开发软件期间,我需要执行一个存储为a的语句string.比如说:

String test = " int a; ";
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想声明一个变量a.

另一个例子是从以下位置执行mysql语句 string:

String sqlquery ="SELECT * FROM FULLDETAILS WHERE Classname = 'test' ";
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/executable","root","mysql");
             st = (Statement) con.createStatement();
             rs = st.executeQuery(sqlquery);
                          ^
Run Code Online (Sandbox Code Playgroud)

我也想为Java语句实现这一点.有办法吗?

编辑:

以上给出的是一个例子,真实情况大不相同(但我基本上需要的是相同的).

的情况是,我有很多的jpanels,我想一些组件添加到它,说label,是从数据库中获取的标签的内容,其仅在运行时,我可以知道,我应该添加哪些面板零件.在这种情况下,我不能指定panel名称,如果我有10 jpanels,我想我可以使用如下字符串:

String test = " jpanel " + i + " .add(jlabel1); " ;
Run Code Online (Sandbox Code Playgroud)

将导致测试的价值将是:

jpanel1.add(jlabel1); // provided i is a string with value of i is 1
Run Code Online (Sandbox Code Playgroud)

现在我想执行这个.有办法吗?

Vol*_*ker 8

也许这不是你想要的,但你可以 仔细使用Java的Reflection API来调用基于(例如)字符串的方法或其他东西.

SQL语句差异很大,因为它们并不是由Java内部实际执行的,它们由JDBC连接另一端的一些额外的SQL Server处理.

在某个地方,你应该有一个所有面板的初始列表,或者在启动时创建它,或者如果我是对的那么?您应该去找一个数据结构来保存它们(例如,HashMap似乎是合适的),添加所有面板并使用一个键来取回它们并根据需要添加标签.

粗略的例子:

Map<Integer, Panel> panelMap = ...
for(int i = 1; i < 10; i++) {
    Panel panel = new Panel();
    panelMap.put(i, panel); 
}

panelMap.get(1).addLabel(labelForPanel1); (for all labels)
Run Code Online (Sandbox Code Playgroud)

当程序执行时,变量名或多或少不相关,它们都是对象.希望更适合您的需求......或者现在我完全错过了:)