NetBeans IDE 6.8 JAVA Swing控件易做图联动下拉列表怎么写?
我现在还在学习初级阶段,很多地方还不懂,现在做到两个下拉列表的联动,但是不知道怎么写第三个。
就是做一个学生信息注册表,系部,专业,班级三个下拉列表,现在做好了系部和专业两个下拉列表,到班级的时候就卡住了。
记得答的简单些,我还不太懂,现在还没连上数据库,我用的是if和else写的联动,代码都是写死了的。
希望懂的亲能够解答一下怎么写易做图联动。
追问: private void departComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
//易做图联动就是从这里开始的,上面还有很多代码,因为字数太多,所以把上面的删掉了
//我JAVA编程很菜,我现在只会写一点点最基本的,还没连上数据库,所以请你也用这个简单的界面制作方法帮我解决下,我不知道怎么加入第三个下拉列表
String depart = this.departComboBox.getSelectedItem().toString();
if (depart.equals("请选择院系")) {
this.majorComboBox.removeAllItems();
this.majorComboBox.addItem("请选择专业");
this.classComboBox.removeAllItems();
this.classComboBox.addItem("请选择班级");
}else if(depart.equals("软件学院")){
this.majorComboBox.removeAllItems();
this.majorComboBox.addItem("请选择专业");
this.majorComboBox.addItem("软件技术");
this.majorComboBox.addItem("动漫设计");
this.majorComboBox.addItem("计算机应用技术");
this.majorComboBox.addItem("电子商务");
} else if (depart.equals("艺术学院")) {
this.majorComboBox.removeAllItems();
this.majorComboBox.addItem("请选择专业");
this.majorComboBox.addItem("室内设计");
this.majorComboBox.addItem("电脑艺术设计");
this.majorComboBox.addItem("音乐表演");
this.majorComboBox.addItem("舞蹈表演");
} else if (depart.equals("机电工程系")) {
this.majorComboBox.removeAllItems();
this.majorComboBox.addItem("请选择专业");
this.majorComboBox.addItem("机电一体化");
this.majorComboBox.addItem("数控技术");
this.majorComboBox.addItem("玩具设计与制造");
this.majorComboBox.addItem("模具设计");
} else if (depart.equals("轻化工程系")) {
this.majorComboBox.removeAllItems();
this.majorComboBox.addItem("请选择专业");
this.majorComboBox.addItem("产品造型设计");
this.majorComboBox.addItem("生化制药技术");
this.majorComboBox.addItem("高分子材料应用技术");
this.majorComboBox.addItem("模具设计");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AddStudentView().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.ButtonGroup SexBtnGroup;
private javax.swing.JLabel SexLabel;
private javax.swing.JButton addBtn;
private javax.swing.JTextField ageIput;
private javax.swing.JLabel ageLabel;
private javax.swing.JComboBox classComboBox;
private javax.swing.JLabel classLabel;
private javax.swing.JButton clearBtn;
private javax.swing.JComboBox departComboBox;
private javax.swing.JLabel departLabel;
private javax.swing.JButton exitBtn;
private javax.swing.JTextArea homeIput;
private javax.swing.JLabel homeLabel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JComboBox majorComboBox;
private javax.swing.JLabel majorLabel;
private javax.swing.JRadioButton manRBtn;
private javax.swing.JTextField nameInput;
private javax.swing.JLabel nameLable;
private javax.swing.JTextField pidIput;
private javax.swing.JLabel pidLabel;
private javax.swing.JTextField snInput;
private javax.swing.JLabel snLable;
private javax.swing.JTextField telIput;
private javax.swing.JLabel telLabel;
private javax.swing.JRadioButton womanRBtn;
// End of variables declaration
}
答案:用else if不行啊,数据库里如果“系部”有30几个,难道你一个个写过去吗?可以用for循环,把系部加入第一个列表
然后 对该列表添加易做图 addActionListener
通过该列表.getSelectedItem得到选中的项
然后专业可以写一个类。里面有一个属性是“系部” 当那些个专业的系部属性为 第一个列表中的值的时候
把那些专业的“专业名”属性加入第二个列表中
依次类推
我给你一个关于省份,城市,和营业网点的3级下拉列表的例子,你稍微修改就可以了
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Test extends JFrame{
private List<String> provinces=new ArrayList<String>();
private List<City> citys=new ArrayList<City>();
private List<Branch> branchs=new ArrayList<Branch>();
private JComboBox provinceBox=new JComboBox();
private JComboBox cityBox=new JComboBox();
private JComboBox branchBox=new JComboBox();
public Test() {
init();
initData();
setBox();
addHandler();
}
public void init(){//初始化GUI界面
JPanel panel=new JPanel();
this.add(panel);
//panel.setLayout(new GridLayout(3,2));
panel.add(new JLabel("省份:"));
panel.add(provinceBox);
panel.add(new JLabel("城市:"));
panel.add(cityBox);
panel.add(new JLabel("营业网点"));
panel.add(branchBox);
}
private void initData(){//初始化省份 城市和营业网点 这些数据实际上应该从数据库里查询
provinces.add("浙江");
provinces.add("广西");
citys.add(new City("浙江","宁波"));
citys.add(new City("浙江","金华"));
citys.add(new City("广西","桂林"));
citys.add(new City("广西","南宁"));
branchs.add(new Branch("浙江","宁波", "宁波镇海网点"));
branchs.add(new Branch("浙江","宁波", "宁波北仑网点"));
branchs.add(new Branch("浙江","金华", "金华网点1"));
branchs.add(new Branch("浙江","金华", "金华网点2"));
branchs.add(new Branch("广西","桂林", "桂林网点1"));
branchs.add(new Branch("广西","桂林", "桂林网点2"));
branchs.add(new Branch("广西","南宁", "南宁网点1"));
branchs.add(new Branch("广西","南宁", "南宁网点2"));
}
private void setBox(){//设置下拉列表里的值
//设置先在各项列表里加入的值
provinceBox.removeAllItems();
cityBox.removeAllItems();
branchBox.removeAllItems();
provinceBox.addItem("所有");
cityBox.addItem("所有");
branchBox.addItem("所有");
for (int i = 0; i < provinces.size(); i++) {
provinceBox.addItem(provinces.get(i));
}
for (int i = 0; i < citys.size(); i++) {
cityBox.addItem(citys.get(i).getCity());
}
for (int i = 0; i < branchs.size(); i++) {
branchBox.addItem(branchs.get(i).getBranch());
}
}
private void addHandler(){//设置3个下拉列表的级联关系
provinceBox.addActionListener(new ActionListener() {
//监听province下拉列表
@Override
public void actionPerformed(ActionEvent e) {
cityBox.removeAllItems();
cityBox.addItem("所有");
branchBox.removeAllItems();
branchBox.addItem("所有");
String province=provinceBox.getSelectedItem().toString();//得到当前点中的值
//在city下拉列表中 遍历citys,如果citys[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况
if(province.equals("所有")){
for (int i = 0; i < citys.size(); i++) {
cityBox.addItem(citys.get(i).getCity());
}
}else{
for (int i = 0; i < citys.size(); i++) {
if(citys.get(i).getProvince().equals(province)){
cityBox.addItem(citys.get(i).getCity());
}
}
}
//在branch下拉列表中 遍历branchs,如果branchs[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况
if(province.equals("所有")){
for (int i = 0; i < branchs.size(); i++) {
branchBox.addItem(branchs.get(i).getBranch());
}
}else{
for (int i = 0; i < branchs.size(); i++) {
if(branchs.get(i).getProvince().equals(province)){
branchBox.addItem(branchs.get(i).getBranch());
}
}
}
}
});
//监听cityBox下拉列表
cityBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
branchBox.removeAllItems();
branchBox.addItem("所有");
if(cityBox.getSelectedItem()==null){
return ;
}
String city=cityBox.getSelectedItem().toString();//得到当前点中的值
if(city.equals("所有")){//如果是所有,则看省份框中是什么值
if(provinceBox.getSelectedItem().equals("所有")){
for (int i = 0; i < branchs.size(); i++) {
branchBox.addItem(branchs.get(i).getBranch());
}
}else{
for (int i = 0; i < branchs.size(); i++) {
if(branchs.get(i).getProvince().equals(provinceBox.getSelectedItem())){
branchBox.addItem(branchs.get(i).getBranch());
}
}
}
}else{
for (int i = 0; i < branchs.size(); i++) {
if(city.equals(branchs.get(i).getCity())){
branchBox.addItem(branchs.get(i).getBranch());
}
}
}
}
上一个:谁帮我说明下java中一些术语的意义
下一个:请给以下java猜数字代码加一个对话框版本的