2016-11-26 1 views
0

Ich möchte drei j Comboboxen mit der Verwendung von Array-Listen und wenn sonst, wenn ich ein Depertment aus der ersten departments J combobox auswählen. Dann werden die Semester in der zweiten j Combobox nacheinander ausgewählt werden, abhängig von der Auswahl von Depertments j combobox.thier wenn ich ein Semester von Semester jcombobox.then wählen werde, wird das alle Semester Buch ausgewählt, abhängig von der Semesterauswahl von Semester jCombobox.Wie dieses Screenshotbeispiel. Java J ComboboxesWie diese J Comboboxen in Java-Programmierung zu füllen?

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]); 
      } 
     }  

    }             

Ich schreibe meine Quellcodes wie die oben Example.But mein Programm nicht funktioniert properly.Is es eine Möglichkeit, dies zu tun?

+1

Sie beginnen mit der Code aufzuschreiben. Wir können nicht mit Geschichten oder Ideen über Code helfen; Wir können nur bei spezifischen Fragen helfen. Mit anderen Worten: Lernen Sie die hervorragenden Tutorials von Oracle zur Verwendung solcher UI-Elemente kennen (https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html) und starten Sie die Programmierung. Und dann, wenn du mit einem bestimmten Problem feststeckst ... komm her und bitte um Hilfe. Aber wir sind nicht hier, um dieses Zeug von Anfang bis Ende zu lehren. – GhostCat

+1

Und dann: Sie wollen, dass wir unsere Zeit verbringen, um Ihnen zu helfen. Also verbringst du bitte die paar Dinge, die nötig sind, um einen menschlichen radierbaren Text zu erstellen. Wie: korrekte Syntax und Verwendung von Leerzeichen, "casiness" und Absätze. – GhostCat

Antwort

0

Nun, um ehrlich zu sein, habe ich nicht wirklich Ihren ganzen Code durchgesehen, aber ich habe Ihre String Arrays innerhalb des Codebeispiels benutzt, das ich unten zur Verfügung stelle. Ich hoffe, ich habe hier nichts falsch interpretiert.

Die ideale Situation in einem Fall wie diesem ist es, die Dinge so narrensicher wie möglich für den Benutzer zu machen. Was ich damit meine ist, gib dem Benutzer nicht die Möglichkeit, einen Fehler in seinen/ihren Auswahlen von den angezeigten JComboBoxen zu machen. Sie können dies tun, indem Sie alle Kombinationsfelder (Semesterauswahl und Buchauswahl) grundsätzlich löschen und deaktivieren, bis eine Abteilung ausgewählt wurde. Wenn alle Auswahlen getroffen wurden und der Benutzer entschieden hat, seine Meinung zu ändern, bevor er diese Auswahlen durch Ändern einer Auswahl übermittelt, werden alle Auswahlfelder nach diesem Auswahlfeld gelöscht oder deaktiviert, bis die entsprechenden Auswahlen getroffen sind. In der Tat sollte die Schaltfläche Senden auch deaktiviert werden, bis alle drei Kombinationsfelder eine gültige Auswahl enthalten und in dem ItemStateChanged()-Ereignis für jedes Kombinationsfeld so verwaltet werden. Auf jeden Fall ....

nun aus irgendeinem Grund haben Sie viel mehr String-Arrays als Sie wirklich brauchen, zum Beispiel:

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"}; 

Alle diese Arrays enthalten genau die gleichen Textelemente. Wird nicht benötigt, da Sie nur ein Array benötigen, um die Semester ComboBox zu füllen. Wir können dies durch einen einzelnen String Array verwendet (nennen wir es Semester):

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

Ich verstehe, warum du das getan hast, aber ehrlich gesagt, ist es nicht erforderlich, und Sie werden, warum in einer Minute zu sehen. Sie werden auch bemerken, dass ich die Dinge in jedem Element richtig verteilt habe, so dass es innerhalb der Semester ComboBox ansprechender aussieht.

In allen String-Arrays, die Buchtitel enthalten (firstSemester [], secondSemester [], thirdSemester [], usw.) kein Verweis auf die Abteilung auch immer ist, für die jeder Buchtitel beziehen könnten . Einige Bücher beziehen sich auf mehrere Abteilungen oder vielleicht sogar auf alle Abteilungen für einige Titel. Sie müssen ein Mittel angeben, mit dem wir wissen, welcher Titel zu welcher Abteilung gehören kann.

Ich habe dies getan, indem sie die Elemente in jedem Array modifiziert, indem die entsprechenden Abteilungen zu jedem elementaren String mit einem Semikolon (;) Begrenzer nur so brauchen Sie nicht in einen 2-dimensionalen Array zu gehen, zum Beispiel ein Array-Element enthalten könnte:

"Engineering Drawing;Civil;Electrical" 

Hier das erste Token immer der Buchtitel ist, und alle anderen Token sind die Abteilungen, die Buchtitel für die betreffende Semester beziehen wird.Es könnte sehr gut ein Element sein, das enthält:

"Basic Workshop Practice" 

Dieses Buch Titel bezieht sich nur auf die jeweilige Abteilung innerhalb der Combo-Box-Abteilung ausgewählt. Jede elementare Zeichenfolge wird mithilfe der String.split() -Methode aufgeteilt, um den Buchtitel und die zugehörige Abteilung, die im Kombinationsfeld Abteilung ausgewählt wurde, abzurufen. Ich habe eine Methode mit dem Namen addBooksToComboBox() hinzugefügt, die sich um dieses Geschäft kümmert (siehe Code unten) und die entsprechenden Buchtitel in das Buch-Kombinationsfeld für die ausgewählte Abteilung und das Semester legt. Hier

ist der Code:

//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); } 
    } 
} 

Hope this hilft Ihnen oder andere in irgendeiner Weise :)