Java Swing组件是否会被禁用?

时间:2016-05-07 16:38:48

标签: java swing file methods load

我回来了另一个问题:(

让我告诉大家代码:

    JCheckBox pPec = new JCheckBox("Potion Effect");
    pPec.setBounds(new Rectangle(50, 270, 140, 30));
    pPec.setFont(fDisp);

    List<String> pPeLl = new ArrayList<String>();
    for (DPE dpe : DPE.values()){
        pPeLl.add(dpe.toString());
    }

    String[] pPeL = pPeLl.toString().replace("[", "").replace("]", "").split(", ");
    JComboBox<String> pPeE = new JComboBox<String>(pPeL);
    pPeE.setBounds(new Rectangle(175, 270, 150, 30));

    List<String> pPeNLl = new ArrayList<String>();
    for (int i = 1; i <= 255; i++){
        pPeNLl.add(Integer.toString(i));
    }
    String[] pPeNL = pPeNLl.toString().replace("[", "").replace("]", "").split(", ");


    JComboBox<String> pPeN = new JComboBox<String>(pPeNL);
    pPeN.setBounds(new Rectangle(175, 300, 73, 30));

    JTextField pPeT = new JTextField();
    ((AbstractDocument)pPeT.getDocument()).setDocumentFilter(new NumberFilter());
    pPeT.setBounds(new Rectangle(175+73+4, 300, 73, 30));




    if (file.exists()){
        for (String s : DFileLoader.getMethod(pathToSaveAs)){
            if (s.startsWith("playerPotionEffect%%@@")){
                pPec.setSelected(true);
                potionEffect = true;
                break;
            }else{
                pPeN.setEnabled(false);
                pPeT.setEnabled(false);
                pPeE.setEnabled(false);
                potionEffect = false;

            }
        }
        if (DFileLoader.getMethod(pathToSaveAs).size() <= 0){
            pPeN.setEnabled(false);
            pPeT.setEnabled(false);
            pPeE.setEnabled(false);
            potionEffect = false;

        }
    }else{
        pPeN.setEnabled(false);
        pPeT.setEnabled(false);
        pPeE.setEnabled(false);
        potionEffect = false;

    }


    pPec.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            if (pPec.isSelected()){
                pPeE.setEnabled(true);
                pPeN.setEnabled(true);
                pPeT.setEnabled(true);
            }else if (!pPec.isSelected()){
                pPeE.setEnabled(false);
                pPeN.setEnabled(false);
                pPeT.setEnabled(false);
            }

            if (pPec.isSelected()) potionEffect = true;
            else potionEffect = false;
        }
    });
    pane.add(pPec);
    if (file.exists()){
        for (String s : DFileLoader.getMethod(pathToSaveAs)){
            if (s.startsWith("playerPotionEffect%%@@")){
                String[] d = s.split("%%@@");
                String text;
                if (d.length <= 1) text = "";
                else text = d[3];

                pPeE.setSelectedItem(d[1]);
                pPeN.setSelectedItem(d[2]);
                pPeT.setText(text);
            }
        }
    }
    pane.add(pPeN);
    pane.add(pPeT);
    pane.add(pPeE);

DFileLoader.getMethod(String)返回一个字符串列表

我要做的是它从文件加载信息,如果文件以&#34; playerPotionEffect %% @@&#34;开头。 (如file.exists()之后所示),它将复选框设置为选中状态。如果没有,它不会选择它并禁用这段代码中显示的其他组件。复选框选择工作正常,只是当我加载文件时,2 JComboBoxes和JTextField被禁用,即使我希望它们被启用。

任何人都可以帮助我吗?问题出在哪里可能非常明显,而且我还没有注意到。我试过移动代码,但它仍然无法正常工作。

&#34;窗格&#34;是JFrame内容窗格的容器。

此外,我点击复选框时将其设置为启用和禁用其他组件。这是有效的,如果我关闭并再次打开复选框,则会启用组件。但是,我只是想要它,以便在选中该框时启用它。

1 个答案:

答案 0 :(得分:0)

哈哈,我很糟糕!

要解决这个问题,我必须在中断之前启用循环中的组件。并非所有字符串都以playerPotionEffect

开头

的xD