2012-02-27 68 views
1

我有具有突片的多个tabs.One一个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

为了更快得到更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-02-27 06:25:17

+0

你确定没有别的改变复选框的状态吗? – 2012-02-27 06:53:25

+0

Yup.Checked它。 – shabeena 2012-02-27 06:58:50

回答

3

似乎在这个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); 
      } 
     }); 
    } 
} 

它的工作你的机器上如预期?

+0

是的,这个程序在我的机器上工作。但神秘的是,如果我也禁用了复选框,然后添加它(在我的源代码中),甚至是其他方式,为什么它不工作? – shabeena 2012-02-27 06:51:39

+1

好的,我得到一个SSCCE并发布它。 – shabeena 2012-02-27 07:00:54