Отключенный флажок добавлен на панель не отключен - PullRequest
1 голос
/ 27 февраля 2012

У меня есть JDialog, который имеет несколько вкладок. Одна из вкладок заполняет динамический список флажков и добавляет его к JPanel. Затем эта панель добавляется к JTabbedPane.

В этом динамическом списке я хотел бы отключить несколько флажков на основе некоторого условия.

Проблема в том, что даже когда я добавляю флажок с отключенным состоянием, он все еще включен.

Я не могу понять, почему он так себя ведет или где я ошибаюсь?

Фрагмент кода, используемый для этого, выглядит следующим образом:

private void populateComponents() 
{
    cwwObjComponentList = cwwObjOprGeneralSetings.getComponentList();
    cwwObjComponentName = cwwObjOprGeneralSetings.getComponentName();
    cwwObjComponentWithType = cwwObjOprGeneralSetings.getComponentsWithType();

    cwwObjPnlComponents.setLayout(new GridLayout(4, 2));

    String mwwStrInstallationType = null;
    if(Configuration.getParameter(ConfigSettings.InstallationType).equalsIgnoreCase("Enterprise"))
    {
        mwwStrInstallationType = StoreSettingsFrame.cwwStrEnterpriseInstallation;
    }
    else if (Configuration.getParameter(ConfigSettings.InstallationType).equalsIgnoreCase("Server"))
    {
        mwwStrInstallationType = StoreSettingsFrame.cwwStrServerInstallation;
    }
    else 
    {
        mwwStrInstallationType = StoreSettingsFrame.cwwStrClientInstallation;
    }


    for (int i = 0; i < cwwObjComponentList.size(); i++) 
    {
        cwwObjCheckbox = new JCheckBox(cwwObjComponentList.get(i));

        String mwwStrComponentType = cwwObjComponentWithType.get(cwwObjComponentList.get(i));

        if(mwwStrComponentType.equalsIgnoreCase(mwwStrInstallationType))
        {
            cwwObjCheckbox.setEnabled(true);
        }
        else
        {
            cwwObjCheckbox.setEnabled(false);//inspite of disabling few checkboxes, all appear to be enabled
        }

        cwwObjPnlComponents.add(cwwObjCheckbox);


    }
}

1 Ответ

3 голосов
/ 27 февраля 2012

Кажется, что работает отлично в этом SSCCE.

DisableMe

import java.awt.*;
import javax.swing.*;

class DisableMe {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new GridLayout(1,0));
                for (int ii=1; ii<7; ii++) {
                    JCheckBox cb = new JCheckBox(""+ii, ii%3==0);
                    cb.setEnabled(ii%2==0);
                    gui.add(cb);
                }
                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

Работает ли это как ожидалось на вашей машине?

...