为了账号安全,请及时绑定邮箱和手机立即绑定

禁用 JAVA 上的按钮,但保留唯一按钮

禁用 JAVA 上的按钮,但保留唯一按钮

30秒到达战场 2022-07-06 18:31:17
我需要在单击它们时出现的唯一按钮会消失问题是当单击“唯一”按钮(见图)时,它们也会消失。我的代码:private String namesArr[] = {"Yakir","Yarden","Igor","Maoz","Moshe","Israel","Tal","Haim","Nati","Mor","Daniel","Idan"};private Button buttonArr[] = new Button[namesArr.length];private Font font;public StudentsGUI(String caption) {    super(caption);    addWindowListener(new WindowAdapter(){            public void windowClosing(WindowEvent e){                    dispose();                        System.exit(0);                        }                    });     this.setLayout(new GridLayout(3,3));    font = new Font("Ariel",Font.BOLD,35);    for(int i=0;i<namesArr.length;i++) {        buttonArr[i] = new Button(" "+namesArr[(int)(Math.random()*namesArr.length)]);        buttonArr[i].setFont(font);        buttonArr[i].addActionListener(this);        this.add(buttonArr[i]);    }    setLocation(800,500);    setVisible(true);    pack();}public void actionPerformed(ActionEvent e) {    if (e.getSource() instanceof Button) {        String btnText = ((Button)e.getSource()).getLabel();        for(int i=0; i<buttonArr.length; i++) {            if (buttonArr[i].getLabel().equals(btnText)) {                this.remove(buttonArr[i]);                pack();            }        }    }}这张图帮助你理解:因此,如果单击“Idan”,witch 是一个唯一名称,则不会发生任何事情,因为它只有一个实例,但是如果单击“Maoz”,则所有带有“Maoz”标题的按钮都会消失(这已经发生了)
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

按照@Freddy的回答使用集合应该会更好。但是,如果您要坚持使用数组,则应该执行以下操作(尽管尚未测试)


public void actionPerformed(ActionEvent e) {

        if (e.getSource() instanceof Button) {

            String btnText = ((Button)e.getSource()).getLabel();

            int counter = 0;

            for(int i=0; i<buttonArr.length; i++) {

                if (buttonArr[i].getLabel().equals(btnText)) counter++;

                if (count > 1) {

                   for(int j=0; j<buttonArr.length; j++) {

                      if (buttonArr[j].getLabel().equals(btnText))

                         this.remove(buttonArr[j]);

                   }

                }

            }

            pack();

        }

}


查看完整回答
反对 回复 2022-07-06
?
月关宝盒

TA贡献1772条经验 获得超5个赞

你的意思是这样的(代码可能有语法错误)?


public void actionPerformed(ActionEvent e) {

    if (e.getSource() instanceof Button) {

        String btnText = ((Button)e.getSource()).getLabel();


        List<Button> btnList = new ArrayList<Button>();

        for(int i=0; i<buttonArr.length; i++) {

            if (buttonArr[i].getLabel().equals(btnText)) {

                btnList.add(buttonArr[i]);

                //this.remove(buttonArr[i]);

                //pack();

            }

        }

        if (btnList.size() > 1) {

            for (Iterator<Button> it = btnList.iterator(); it.hasNext()) {

                this.remove(it.next());

            }

            pack();

        }

    }

}


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信