将JList表中的未选项设置为setEnable(false)

时间:2015-12-12 21:20:19

标签: java jlist

我在更改JList表格中未选中的选项时难以将其设置为setEnable(false)。接收值的方法是ActionListener按钮方法,一旦按下,就会从JList接收选定的值。以下是方法,buildEnemySelectionPanel()方法正在使用适当的JList创建JPanel,以便以后放置:

private String[] enemies = {"Goblin", "Skeleton"};

private void buildEnemySelectionPanel()
{
    enemyPanel = new JPanel();
    enemyListPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    enemyListPanel.setPreferredSize(new Dimension(180, 85));
    enemyListPanel.setBackground(Color.WHITE);
    enemyPanel.setLayout(new BoxLayout(enemyPanel, BoxLayout.Y_AXIS));

    enemyList = new JList(enemies);

    enemyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    enemyList.addListSelectionListener(new EnemyListListener());
    enemyListPanel.add(enemyList);
    enemyPanel.add(enemyListPanel);
}
public void actionPerformed(ActionEvent e)
{
    if (e.getActionCommand().equals("Select Enemy"))
    {
        indexEnemy = enemyList.getSelectedIndex();
        indexEnemyWeapon = weaponList.getSelectedIndex();
      /* 
         here is where I'm having problems
       */
    }
}

到目前为止,我已尝试从JList获取所有项目,并将其与我发送到String[] list的原始JList项目中的引用相匹配,解析索引,如果他们没有匹配设置为false。不幸的是,您可能都很清楚,由于JList 实际上列表,因此会出现编译错误。以下是我尝试在上述方法中使用的for循环示例:

for(int x = 1; x < enemyList.length(); x++)
{
    if (!(enemies[x] == indexEnemy))
    {
        enemyList[x].setEnable(false);
    }
}

我已经阅读了http://docs.oracle.com/javase/8/docs/api/,(试图链接&#39; setEnable&#39;)在一些示例中,但似乎并没有建立连接。

理想情况下,我希望发生的是,当触发我的按钮的ActionEvent时,我的JList中的所有未选择的选项都将被停用。我知道最终用户仍然可以改变他/她的想法并做出不同的选择。但是,如果我们的JList中的未选择项目不是false,我仍然可以获得一些帮助。

0 个答案:

没有答案