首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java编程中填充这些J组合框?

如何在java编程中填充这些J组合框?
EN

Stack Overflow用户
提问于 2016-11-26 20:09:50
回答 1查看 43关注 0票数 0

我想用数组列表填充三个j组合框,如果是的话,如果是的话,condition.if我将从第一个combobox.then中选择一个depending jCombobox.Like,根据第二个comboboxes中的选择来逐个选择学期,如果我从学期jcombobox.then中选择了一个学期,那么根据学期jCombobox.Like的选择,jCombobox.Like会自动选择所有学期的书。Java J组合框是一个例子。

代码语言:javascript
复制
String[] dep={"Select Depertment","Compurter","Civil","Electrical","Telecom"};
String[] Compurter={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Civil={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Electrical={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Telecom={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};


String[]FirstSemester={"Select BooK Name","English1","Engineering Drawing","Mathematics-1","Chemistry","Computer Fundamental","Basic Electricity","Basic Electronics"};
String[]SecondSemester={"Select BooK Name","English 2","Physical Education","Physics-1","Mathematics-2","Computer Application-1","Bangla","Electronic Device & Circuit-1","Basic Workshop Practice"};
String[]ThirdSemester= {"Select BooK Name","Programming Language-1","Computer Application-2","Digital Electronics-1","Industrial Electronics","Mathematics-3","Physics-2","Social Science-1"};
String[]FourthSemester={"Select BooK Name","Programming Language-2","CAD & Graphics Design","Digital Electronics-2","Data Structure & Algorithm","Electrical Circuits & Machine","Discrete Mathematics","Social Science-2"};
String[]FifthSemester={"Select BooK Name","Microprocessor & Microcomputer-1","Computer Architecture","Programming Language-3","Database Management System","Web Design","Book Keeping & Accounting","Environmental Management"};
String[]SixthSemester={"Select BooK Name","Microprocessor & Microcomputer-2","Computer Peripherals","Data Comm. & Computer Network-1","Computer System Software","Computer Servicing","Web Development","Business Org. & Communication"};
String[]SeventhSemester={"Select BooK Name","Embedded Systems & PLC","Multimedia & Graphics","System Analysis & Design","Data Comm. & Computer Network-2","Computer Engineer Project","Industrial Management","Entrepreneurship"};        

public LibraryManage() {
    initComponents();

    divcomboDepertment.removeAllItems();

    for(int i=0; i< dep.length;i++) {
        divcomboDepertment.addItem(dep[i]);
    }   




    for(int i=0; i< Compurter.length;i++) {
        divcomboBook.addItem(Compurter[i]);
    }       

 }

 @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        divcomboDepertment = new javax.swing.JComboBox<>();
        divcomboSemester = new javax.swing.JComboBox<>();
        divcomboBook = new javax.swing.JComboBox<>();
        jPanel2 = new javax.swing.JPanel();
        txtSubmit = new javax.swing.JButton();

        jPanel1.setBackground(new java.awt.Color(51, 204, 255));

        jLabel1.setText("Depertment:");

        jLabel2.setText("Semester:");

        jLabel3.setText("Books:");

        divcomboDepertment.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        divcomboDepertment.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                divcomboDepertmentItemStateChanged(evt);
            }
        });

        divcomboSemester.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        divcomboSemester.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                divcomboSemesterItemStateChanged(evt);
            }
        });

        divcomboBook.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(141, 141, 141)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING))
                .addGap(74, 74, 74)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(divcomboSemester, 0, 335, Short.MAX_VALUE)
                    .addComponent(divcomboDepertment, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(divcomboBook, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(divcomboDepertment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(63, 63, 63)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(divcomboSemester, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 91, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(divcomboBook, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(84, 84, 84))
        );

        jPanel2.setBackground(new java.awt.Color(255, 255, 51));

        txtSubmit.setText("Submit");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(273, 273, 273)
                .addComponent(txtSubmit)
                .addContainerGap(315, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addComponent(txtSubmit)
                .addContainerGap(30, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void divcomboDepertmentItemStateChanged(java.awt.event.ItemEvent evt) {                                                    
        // TODO add your handling code here:
    divcomboSemester.removeAllItems();

        if(divcomboDepertment.getSelectedIndex() !=0)
        {
            String[] c;

            if (divcomboDepertment.getSelectedIndex()==1)
            {
                c=Compurter;
            }
            else if(divcomboDepertment.getSelectedIndex()==2)
            {
                c =Civil;
            }
            else if(divcomboDepertment.getSelectedIndex()==3)
            {
                c=Electrical;
            }

           else 
            {
                c=Telecom;
            }

            for(int i=0; i<c.length; i++)
            {
                divcomboSemester.addItem(c[i]);
            }
        }     


    }                                                   

    private void divcomboSemesterItemStateChanged(java.awt.event.ItemEvent evt) {                                                  
        // TODO add your handling code here:
          divcomboBook.removeAllItems();

        if(divcomboSemester.getSelectedIndex() !=0)
        {
            String[] b;

            if (divcomboSemester.getSelectedIndex()==1)
            {
                b=FirstSemester;
            }
            else if(divcomboSemester.getSelectedIndex()==2)
            {
                b =SecondSemester;
            }
            else if(divcomboSemester.getSelectedIndex()==3)
            {
                b=ThirdSemester;
            }
           else if(divcomboSemester.getSelectedIndex()==4)
            {
                b=FourthSemester;
            }
           else if(divcomboSemester.getSelectedIndex()==5)
            {
                b=FifthSemester;
            }
           else if(divcomboSemester.getSelectedIndex()==6)
            {
                b=SixthSemester;
            }
           else 
            {
                b=SeventhSemester;
            }

            for(int i=0; i<b.length; i++)
            {
                divcomboBook.addItem(b[i]);
            }
        }     

    }                                                 

我正在写我的源代码,像上面的Example.But,我的程序没有工作properly.Is,有什么办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-27 09:03:54

老实说,我并没有仔细看过您的所有代码,但我确实在下面提供的代码示例中使用了字符串数组。我希望我没有曲解这里的任何东西。

在这种情况下,理想的情况是尽量为用户提供最愚蠢的证明。我的意思是,不要给用户从显示的JComboBoxes中选择错误的机会。您可以通过清除和禁用所有组合框(学期选择和图书选择)来完成此操作,直到实际部门已经选定为止。如果所有选择都已完成,并且用户决定在提交这些选择之前通过更改任何选择来更改主意,则在选择框之后的所有组合框将被清除或禁用,直到做出适当的选择为止。事实上,您的提交按钮也应该禁用,直到所有三个组合框都包含有效的选择,并在每个组合框的ItemStateChanged()事件中以这种方式维护。无论如何..。

现在,由于某种原因,字符串数组比实际需要的要多得多,例如:

代码语言:javascript
复制
String[] Compurter={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Civil={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Electrical={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};
String[] Telecom={"Select Semester","FirstSemester","SecondSemester","ThirdSemester","FourthSemester","FifthSemester","SixthSemester","SeventhSemester"};

所有这些数组都包含完全相同的字符串元素。不需要,因为您只需要一个数组来实际填写学期ComboBox。我们可以通过使用单个字符串数组(让我们将其称为学期)来完成这一任务:

代码语言:javascript
复制
String[] semesters={"Select Semester","First Semester","Second Semester","Third Semester",
                    "Fourth Semester","Fifth Semester","Sixth Semester","Seventh Semester"};

我明白你为什么这么做,但老实说,这不是必需的,你马上就会明白为什么。您还会注意到,我在每个元素中正确地排列了内容,这样在学期ComboBox中看起来更有吸引力。

在包含书名、(firstSemester[]secondSemester[]thirdSemester[],等的所有字符串数组中,对每个书名可能与之相关的部门没有任何引用。一些书籍可能涉及多个部门,甚至可能涉及所有部门的一些标题。您需要提供一种方法,以便我们知道哪个标题可以与哪个部门相关。

为此,我修改了每个数组中的元素,使用分号(;)分隔符将相关部门添加到每个元素字符串中,这样就不需要进入二维数组,例如,数组元素可能包含:

代码语言:javascript
复制
"Engineering Drawing;Civil;Electrical"

在这里,第一个标记总是书名,任何其他的标记都是书名将与该学期相关的部门。很可能有一个包含以下内容的元素:

代码语言:javascript
复制
"Basic Workshop Practice"

此书名仅涉及在“部门”组合框中选定的特定部门。每个元素字符串使用String.split()方法进行拆分,以便检索在部门组合框中选择的图书标题和相关部门。我添加了一个名为addBooksToComboBox()的方法,它负责此业务(请参阅下面的代码),并将适当的图书标题放在选定的部门和学期的图书组合框中。

以下是代码:

代码语言:javascript
复制
//Place under your class constructor:
String[] dep = {"Select Depertment","Computer","Civil","Electrical","Telecom"};

String[] semesters={"Select Semester","First Semester","Second Semester","Third Semester",
                    "Fourth Semester","Fifth Semester","Sixth Semester","Seventh Semester"};


String[] firstSemesterBooks = {"Select Book Name","English1;Civil;Telecom","Engineering Drawing;Civil;Electrical",
                               "Mathematics-1;Computer;Civil;Electrical;Telecom","Chemistry;Civil",
                               "Computer Fundamental;Computer;Civil;Electrical;Telecom","Basic Electricity;Electrical",
                               "Basic Electronics;Electrical"};

String[] secondSemesterBooks ={"Select Book Name","English 2;Civil;Telecom","Physical Education;Computer;Civil;Electrical;Telecom",
                               "Physics-1;Civil","Mathematics-2;Computer;Civil;Electrical;Telecom",
                               "Computer Application-1;Computer","Bangla;Telecom","Electronic Device & Circuit-1;Electrical",
                               "Basic Workshop Practice;Civil;Electrical"};

String[] thirdSemesterBooks = {"Select Book Name","Programming Language-1;Computer","Computer Application-2;Computer",
                               "Digital Electronics-1;Electrical", "Industrial Electronics;Electrical","Mathematics-3;Civil;Electrical",
                               "Physics-2;Civil","Social Science-1;Civil"};

String[] fourthSemesterBooks = {"Select Book Name","Programming Language-2;Computer","CAD & Graphics Design;Computer;Civil",
                                "Digital Electronics-2;Electrical", "Data Structure & Algorithm;Computer",
                                "Electrical Circuits & Machine;Electrical","Discrete Mathematics;Civil",
                                "Social Science-2;Civil"};

String[] fifthSemesterBooks = {"Select Book Name","Microprocessor & Microcomputer-1;Computer;Electrical",
                               "Computer Architecture;Computer;Electrical","Programming Language-3;Computer",
                               "Database Management System;Computer","Web Design;Computer","Book Keeping & Accounting;Civil;Telecom",
                               "Environmental Management;Civil"};

String[] sixthSemesterBooks = {"Select Book Name","Microprocessor & Microcomputer-2;Computer;Electrical",
                               "Computer Peripherals;Computer;Electrical", "Data Comm. & Computer Network-1;Computer",
                               "Computer System Software;Computer","Computer Servicing;Computer;Electrical",
                               "Web Development;Computer","Business Org. & Communication;Civil"};

String[] seventhSemesterBooks = {"Select Book Name","Embedded Systems & PLC;Electrical","Multimedia & Graphics;Computer",
                                 "System Analysis & Design;Computer;Civil","Data Comm. & Computer Network-2;Computer",
                                 "Computer Engineer Project;Computer","Industrial Management;Civil;Telecom",
                                 "Entrepreneurship;Computer;Civil;Electrical;Telecom"};   

// *******************************************************
// * I have added the Departements to Book Titles. It's up to YOU to make *
// * sure they are correct!                                                                 *
// *******************************************************


// JButton used to load up the Department ComboBox
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    divcomboDepartment.removeAllItems();
    divcomboSemester.removeAllItems();
    divcomboBook.removeAllItems();
    divcomboSemester.setEnabled(false);
    divcomboBook.setEnabled(false);

    for(int i=0; i< dep.length; i++) {
       divcomboDepartment.addItem(dep[i]);
    }  

}  

private void divcomboDepartmentItemStateChanged(java.awt.event.ItemEvent evt) {
    divcomboSemester.removeAllItems();
    divcomboBook.removeAllItems();

    if(divcomboDepartment.getSelectedIndex() == 0) {
        divcomboSemester.setEnabled(false);
        divcomboBook.setEnabled(false);
        return;
    }
    String depName = divcomboDepartment.getSelectedItem().toString();
    for(int i=0; i< semesters.length;i++) {
        divcomboSemester.addItem(semesters[i]);
    }
    divcomboSemester.setEnabled(true);
}

private void divcomboSemesterItemStateChanged(java.awt.event.ItemEvent evt) {
    divcomboBook.removeAllItems();
    String department = divcomboDepartment.getSelectedItem().toString();

    if(divcomboSemester.getSelectedIndex() == 0) {
        divcomboBook.setEnabled(false);
        return;
    }
    String[] semesterBooks = null;
    String semesterStrg = evt.getItem().toString(); 
    if (semesterStrg.equalsIgnoreCase("first semester")) { semesterBooks = firstSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("second semester")) { semesterBooks = secondSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("third semester")) { semesterBooks = thirdSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("fourth semester")) { semesterBooks = fourthSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("fifth semester")) { semesterBooks = fifthSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("sixth semester")) { semesterBooks = sixthSemesterBooks; }
    else if (semesterStrg.equalsIgnoreCase("seventh semester")) { semesterBooks = seventhSemesterBooks; } 
    else { return; }

    addBooksToComboBox(divcomboBook, semesterBooks, department);
    divcomboBook.setEnabled(true);
}

private static void addBooksToComboBox(final JComboBox combo, final String[] semesterArray, final String department) {
    for(int i = 0; i < semesterArray.length; i++) {
        String booksStrg = semesterArray[i];
        if (booksStrg.contains(";")) {
            String[] depts = booksStrg.split(";");
            for (int j = 0; j < depts.length; j++) {
                if (depts[j].equalsIgnoreCase(department)) {
                    combo.addItem(depts[0]);
                }
            }
        }
        else { combo.addItem(booksStrg); }
    }
}

希望这能在某种程度上帮助你或其他人:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40822641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档