Java 将ActionListener更改为附加StringBuilder
在两条大幅缩短代码的语句中,我需要添加一条语句,将JButton的文本添加到StringBuilder中。ActionListener语句的存在是为了在单击时禁用JButtons(一种很好的美学),但是如果可能的话,我想包括在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() {
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());