有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Swing动态字段选择

我不知道该怎么问这个问题,而且我肯定我遇到的问题还有其他解决方案,所以如果有人能给我指出正确的方向,我将不胜感激

无论如何,我遇到的问题是,我有一个字符串[]列表(称为“项目”),用于填充组合框。我想使用组合框中的选择动态更改GUI面板中列出的表单字段

到目前为止,我的方法还不够动态,因为当我完成时,我将从组合框中有近100个可能的选择。到目前为止,我已经测试了3个选项,但将其扩展到100将涉及大量代码,我认为一定有其他解决方案,对吗?我只是不知道解决办法是什么

String[] projects = {"Select a project...", "Option1", "Option2", "Option3"};

String[] Option1= {"phone", "maxphv"};
String[] Option2= {"address1", "address2", "house", "predir", "street", "strtype", "postdir", "apttype", "aptnbr"
        , "city", "state", "zip"};
String[] Option3= {"phone"};

ArrayList<String> fieldslist, fieldslbllist;

理想情况下,我希望从projects String[]组合框中选择项目的名称,并将该名称引用为另一个列表的名称,该列表包含我要在面板中显示的字段

但我从阅读其他问题中发现,一旦代码被编译,变量的名称就无关紧要了

此时,我有一组代码来清除面板并动态选择字段,但我仍然需要为100个选项中的每一个手动编写替换代码。我想这并不可怕,但我认为可能有一种更好的方式我不知道

public void resetFields() {
    fieldslist.clear();
    fieldslbllist.clear();
}

public void setFields() {
    if (project.getSelectedIndex() == 0) {
        resetFields();
    }
    else if (project.getSelectedIndex() == 1) {
        resetFields();
        for (int i = 0; i <= Option1.length; i++) {
            fieldslist.add(Option1[i]);
            fieldslbllist.add(Option1[i]+"lbl");
        }
    }
    else if (project.getSelectedIndex() == 2) {
        resetFields();
        for (int i = 0; i <= Option2.length; i++) {
            fieldslist.add(Option2[i]);
            fieldslbllist.add(Option2[i]+"lbl");
        }
    }
//... onward to 100

以上只是一个循环,它在选择组合框中的新选项时重置显示,然后在OptionX String[]列表中的选项之间循环,并将值添加到字段数组中

这是处理动态UI编码的可行方法吗?还有,有没有办法设置它,这样我只需要指定哪些字段属于每个值,而不必为每个可能的项目编写一个部分。设置字段()中的getSelectedIndex()值


共 (1) 个答案

  1. # 1 楼答案

    使用^{},参见here,动态更改表单。考虑到有大量的替代方案,在选项中寻找一个层次结构分解,它可能允许您使用两个相关的控件,如图here

    image