我想用数组列表填充三个j组合框,如果是的话,如果是的话,condition.if我将从第一个combobox.then中选择一个depending jCombobox.Like,根据第二个comboboxes中的选择来逐个选择学期,如果我从学期jcombobox.then中选择了一个学期,那么根据学期jCombobox.Like的选择,jCombobox.Like会自动选择所有学期的书。Java J组合框是一个例子。
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,有什么办法吗?
发布于 2016-11-27 09:03:54
老实说,我并没有仔细看过您的所有代码,但我确实在下面提供的代码示例中使用了字符串数组。我希望我没有曲解这里的任何东西。
在这种情况下,理想的情况是尽量为用户提供最愚蠢的证明。我的意思是,不要给用户从显示的JComboBoxes中选择错误的机会。您可以通过清除和禁用所有组合框(学期选择和图书选择)来完成此操作,直到实际部门已经选定为止。如果所有选择都已完成,并且用户决定在提交这些选择之前通过更改任何选择来更改主意,则在选择框之后的所有组合框将被清除或禁用,直到做出适当的选择为止。事实上,您的提交按钮也应该禁用,直到所有三个组合框都包含有效的选择,并在每个组合框的ItemStateChanged()事件中以这种方式维护。无论如何..。
现在,由于某种原因,字符串数组比实际需要的要多得多,例如:
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。我们可以通过使用单个字符串数组(让我们将其称为学期)来完成这一任务:
String[] semesters={"Select Semester","First Semester","Second Semester","Third Semester",
"Fourth Semester","Fifth Semester","Sixth Semester","Seventh Semester"};我明白你为什么这么做,但老实说,这不是必需的,你马上就会明白为什么。您还会注意到,我在每个元素中正确地排列了内容,这样在学期ComboBox中看起来更有吸引力。
在包含书名、(firstSemester[],secondSemester[],thirdSemester[],等的所有字符串数组中,对每个书名可能与之相关的部门没有任何引用。一些书籍可能涉及多个部门,甚至可能涉及所有部门的一些标题。您需要提供一种方法,以便我们知道哪个标题可以与哪个部门相关。
为此,我修改了每个数组中的元素,使用分号(;)分隔符将相关部门添加到每个元素字符串中,这样就不需要进入二维数组,例如,数组元素可能包含:
"Engineering Drawing;Civil;Electrical"在这里,第一个标记总是书名,任何其他的标记都是书名将与该学期相关的部门。很可能有一个包含以下内容的元素:
"Basic Workshop Practice"此书名仅涉及在“部门”组合框中选定的特定部门。每个元素字符串使用String.split()方法进行拆分,以便检索在部门组合框中选择的图书标题和相关部门。我添加了一个名为addBooksToComboBox()的方法,它负责此业务(请参阅下面的代码),并将适当的图书标题放在选定的部门和学期的图书组合框中。
以下是代码:
//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); }
}
}希望这能在某种程度上帮助你或其他人:)
https://stackoverflow.com/questions/40822641
复制相似问题