(卡片布局)设置JComboBox的卡片面板名称

时间:2016-03-11 13:16:09

标签: java swing layout jcombobox cardlayout

人。我的项目设计是使用Netbeans的GUI Builder进行的硬编码设计和设计的组合。我决定使用GUI Builder for RAD和快速设计,因为我们已经落后于计划。

所以我的问题是如何在为面板使用卡片布局时为卡片分配名称。我知道如果不使用GUI Builder,您只需编写cardContainerPanel.add(card1Panel,"card1")即可。 card1作为card1Panel的String标识符。但我希望能够传递一个String variable作为卡名。

像,

String card1 = "card1";

然后
cardContainerPanel.add(card1Panel, card1)

1。)如果只使用您在Card Name上键入的字符串

,则可以使用面板的“属性”选项在Netbeans GUI Builder上执行此操作

enter image description here

我需要在itemChange的{​​{1}}活动期间切换到不同的卡片。

这是我到目前为止所写的内容。

JComboBox

enter image description here

enter image description here

我很感激任何帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

在IDE中硬编码卡的名称是无关紧要的。

相关的是您想要交换卡时使用的卡名称。在这种情况下,您无法使用变量来指定要切换到的卡名称。

实际上,您似乎正在使用组合框来选择要显示的卡。因此,您需要做的就是确保卡名称与组合框中显示的值相同。

然后在您的ItemListener中,您只需使用以下内容来交换卡片:

cardLayout.show(cards, (String)evt.getItem());

有关工作示例,请参阅How to Use CardLayout上的Swing教程中的部分。

答案 1 :(得分:0)

我能够使用addLayoutComponent()方法解决它,该方法将面板添加到Card Layout对象并接受字符串变量作为其第二个参数。

        String HOME = "Home";
        String ADMIN = "Administration";
        String ADMIN_CURC = "Administration > Curriculum";
        String ADMIN_DISCOUNTS = "Administration > Discounts";
        String ADMIN_SECTIONS = "Administration > Sections";
        String ADMIN_USERS = "Administration > Users";
        String ADMIN_SCHED = "Administration > Schedule";
        String ADMIN_YRLEVEL = "Administration > Year Level";
        String PAYMENT = "Payment";
        String REGISTRATION = "Registration";
        String STUDENTS = "Students";
        String FACULTY = "Faculty";
        String REPORTS = "Reports";
        String SECTIONS = "Sections";

        String settingsComboBoxItems[] = 
            {HOME,ADMIN,ADMIN_CURC,ADMIN_DISCOUNTS,
                ADMIN_SECTIONS,ADMIN_USERS,ADMIN_SCHED,
                ADMIN_YRLEVEL,PAYMENT,REGISTRATION,STUDENTS,FACULTY,REPORTS,SECTIONS};
        DefaultComboBoxModel dcm = new DefaultComboBoxModel(settingsComboBoxItems);

//constructor
    public UserManagementGUI() {
            initComponents();
            loadUsersList();
            settingsComboBox.setModel(dcm);
        }

private void settingsComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {                                                  
        CardLayout cl = (CardLayout)(cardContainerPanel.getLayout());
        cl.addLayoutComponent(homePermissionsPanel, HOME);
        cl.addLayoutComponent(administrationPermissionsPanel, ADMIN);
        cl.show(cardContainerPanel, (String)evt.getItem());
    }