【问题标题】:A Java Swing Component Keeps Getting Disabled?Java Swing 组件不断被禁用?
【发布时间】:2016-05-07 16:38:48
【问题描述】:

我又遇到了另一个问题:(

让我给你们看一下代码:

    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) 返回一个字符串列表

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

谁能帮帮我?问题出在哪里可能真的很明显,而我只是没有注意到。我试过移动代码,但还是不行。

“窗格”是 JFrame 内容窗格的容器。

另外,当您单击复选框时,我将其设置为启用和禁用其他组件。这有效,如果我关闭并再次打开复选框,组件将被启用。但是,我只想要它以便在选中该框时在加载时启用它。

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) Java GUI 必须在不同的语言环境中使用不同的 PLAF 在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
  • DFileLoader.getMethod(pathToSaveAs) 返回的是什么?
  • @rdonuk 它就在代码下方。它返回一个字符串列表
  • 我的意思是究竟返回什么?因为您正在设置禁用 for 循环中的组件。因此,例如,如果最后一个字符串不是以“playerPotionEffect%%@@”开头,组件将被禁用。所以检查它是否所有字符串都以“playerPotionEffect%%@@”开头。
  • @rdonuk 它返回的效果很好。所有组合框和文本字段均已正确填写。他们只是由于某种原因被禁用

标签: java swing file methods load


【解决方案1】:

哈哈,我很烂!

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

xD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多