我有一个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);
}
}
答案 0 :(得分:3)
在这个SSCCE中似乎工作正常。
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);
}
});
}
}
它是否在您的计算机上按预期工作?