我在更改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
,我仍然可以获得一些帮助。