Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ActionListener更改为附加StringBuilder_Java_Append_Jbutton_Actionlistener_Stringbuilder - Fatal编程技术网

Java 将ActionListener更改为附加StringBuilder

Java 将ActionListener更改为附加StringBuilder,java,append,jbutton,actionlistener,stringbuilder,Java,Append,Jbutton,Actionlistener,Stringbuilder,在两条大幅缩短代码的语句中,我需要添加一条语句,将JButton的文本添加到StringBuilder中。ActionListener语句的存在是为了在单击时禁用JButtons(一种很好的美学),但是如果可能的话,我想包括在ActionListener中附加StringBuilder的功能。以下是该代码的两部分 theModel.randomLetters(); ActionListener disableButton = new ActionListener() {

在两条大幅缩短代码的语句中,我需要添加一条语句,将JButton的文本添加到StringBuilder中。ActionListener语句的存在是为了在单击时禁用JButtons(一种很好的美学),但是如果可能的话,我想包括在ActionListener中附加StringBuilder的功能。以下是该代码的两部分

theModel.randomLetters();

    ActionListener disableButton = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            if (!(event.getSource() instanceof JButton)) {
                return;
            }
            theModel.currentWord.append((JButton)event.getSource());
            ((JButton)event.getSource()).setEnabled(false);
        }
    };

    for (int i = 0; i < 16; i++) {
        JButton dice = new JButton(theModel.letters.get(i));
        dice.addActionListener(disableButton);
        boggleGrid.add(dice);
    }
是我认为可以正确地将StringBuilder“currentWord”附加到单击的按钮所包含的任何值(因此“((JButton)event.getSource())”)。没有任何错误,但是我在我的主类中编写了单独的代码行,以测试在单击任何按钮时StringBuilder是否有任何更改。没有

要将单击的JButton的值正确添加到currentWord,我需要在何处以及做什么?

使用
(JButton)事件。getSource()
将导致
StringBuilder
调用对象
toString
方法。这不是您想要的,您可以使用
JButton
text
属性或
ActionEvent
actionCommand
属性,例如

theModel.currentWord.append(((JButton)event.getSource()).getText());

反而

除非您自己指定
JButton
actionCommand
,否则它将使用
actionCommand

使用
(JButton)事件。getSource()
将导致
StringBuilder
调用对象
toString
方法。这不是您想要的,您可以使用
JButton
text
属性或
ActionEvent
actionCommand
属性,例如

theModel.currentWord.append(((JButton)event.getSource()).getText());

反而


除非您自己指定
JButton
actionCommand
,否则它将使用按钮文本作为
actionCommand

@分号help@SemicolonCapitalD很高兴能帮上忙
theModel.currentWord.append(event.getActionCommand());