1. 程式人生 > >Swing容器中在jTable中新增combobox下拉框時,有關一個下拉框值改變,另一個下拉框值隨之改變的方法

Swing容器中在jTable中新增combobox下拉框時,有關一個下拉框值改變,另一個下拉框值隨之改變的方法

在jTable中,我們經常會需要新增下拉框,一個下拉框很容易設定,但是兩個下拉框設定二級聯動就需要新增addItemListener監聽方法。

所要功能如下圖:


程式碼如下:

//型別列表
        comboboxType.removeAllItems();
        comboboxType.addItem("");
        comboboxType.addItem("母線");
        comboboxType.addItem("線路");
        comboboxType.addItem("主變");
        
        
        //獲取母線列表
        busList = service.getBusId();
        comboboxBus.removeAllItems();
        busMap.clear();
        for (int i = 0; i < busList.size(); i++) {
            String[] s = busList.get(i);
            comboboxBus.addItem(s[1]);
            busMap.put(s[1], s[0]);
        }
        
        //獲取線路列表
        lineList = service.getLine();
        comboboxLineName.removeAllItems();
        lineMap.clear();
        for (int i = 0; i < lineList.size(); i++) {
            String[] s = lineList.get(i);
            comboboxLineName.addItem(s[1]);
            lineMap.put(s[1], s[0]);
        }
        
        //獲取主變列表
        transformerList = service.getTransformer();
        comboboxTransformer.removeAllItems();
        transformerMap.clear();
        for (int i = 0; i < transformerList.size(); i++) {
            String[] s = transformerList.get(i);
            comboboxTransformer.addItem(s[1]);
            transformerMap.put(s[1], s[0]);
        }

Column_Width.setTableRowColor2_line(jTable7);
        jTable7.getColumn("型別").setCellEditor(new DefaultCellEditor(comboboxType));
        jTable7.getColumn("退役時間").setCellEditor(new DefaultCellEditor(jDatePicker1));
        
        comboboxType.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                if(comboboxType.getSelectedItem().toString().equals("母線")){
                    jTable7.getColumn("名稱").setCellEditor(new DefaultCellEditor(comboboxBus));
                }else if(comboboxType.getSelectedItem().toString().equals("線路")){
                    jTable7.getColumn("名稱").setCellEditor(new DefaultCellEditor(comboboxLineName));
                }else if(comboboxType.getSelectedItem().toString().equals("主變")){
                    jTable7.getColumn("名稱").setCellEditor(new DefaultCellEditor(comboboxTransformer));
                }
            }
        });