Java 带有actionListener的JButton数组…打印结果时出现问题
基本上,我为字母表中的每个字母创建了一个数组,然后将其添加到一个jbutton数组中。这很好,但是我现在尝试添加一个动作侦听器,我成功地使其工作 但是,它的工作原理是,我有26条if语句来检查每个按钮是否被按下,因此我尝试添加for循环 现在,当我按下按钮时,它会打印出一堆关于JbUTTON属性的垃圾。我哪里会出错Java 带有actionListener的JButton数组…打印结果时出现问题,java,arrays,swing,jbutton,Java,Arrays,Swing,Jbutton,基本上,我为字母表中的每个字母创建了一个数组,然后将其添加到一个jbutton数组中。这很好,但是我现在尝试添加一个动作侦听器,我成功地使其工作 但是,它的工作原理是,我有26条if语句来检查每个按钮是否被按下,因此我尝试添加for循环 现在,当我按下按钮时,它会打印出一堆关于JbUTTON属性的垃圾。我哪里会出错 String[] letters = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F",
String[] letters = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" };
layout.add(scrollBar);
for (int i=0; i < 26; i++)
{
if (i==25)
{
layout.add(spacebar);
spacebar.setPreferredSize(new Dimension(310,50));
spacebar.setBackground(Color.black);
spacebar.setForeground(Color.white);
spacebar.addActionListener(new action());
}
AlphaButton[i] = new JButton(letters[i]);
AlphaButton[i].setPreferredSize(new Dimension(50,50));
AlphaButton[i].setBackground(Color.black);
AlphaButton[i].setForeground(Color.white);
layout.add(AlphaButton[i]);
AlphaButton[i].addActionListener(new action());
}
class action implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String V = screenArea.getText();
for (int i=0; i < 26; i++)
{
if( e.getSource() == AlphaButton[i] )
{
screenArea.setText(V + AlphaButton[i]);
}
}
}
}
String[]字母={“Q”、“W”、“E”、“R”、“T”、“Y”、“U”、“I”、“O”、“P”、“A”、“S”、“D”、“F”、“G”、“H”、“J”、“K”、“L”、“Z”、“X”、“C”、“V”、“B”、“N”、“M”};
布局。添加(滚动条);
对于(int i=0;i<26;i++)
{
如果(i==25)
{
布局。添加(空格键);
spacebar.setPreferredSize(新尺寸(310,50));
空格键。背景(颜色。黑色);
空格键。设置前景(颜色。白色);
addActionListener(新操作());
}
AlphaButton[i]=新的JButton(字母[i]);
AlphaButton[i].setPreferredSize(新尺寸(50,50));
AlphaButton[i].背景(颜色.黑色);
AlphaButton[i]。设置前景(颜色。白色);
布局。添加(字母按钮[i]);
AlphaButton[i].addActionListener(新操作());
}
类操作实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
String V=screenArea.getText();
对于(int i=0;i<26;i++)
{
如果(例如getSource()==AlphaButton[i])
{
screenArea.setText(V+字母按钮[i]);
}
}
}
}
您需要覆盖alpha按钮toString
方法
// your class
public class AlphaButton {
@Override
public String toString() {
return "This is an AlphaButton"; // or whatever output you want it to say
}
}
如果您需要返回按下的信函:
screenArea.setText(V + AlphaButton[i].getText);
为什么不干脆做:
public void actionPerformed(ActionEvent e) {
String V = screenArea.getText();
screenArea.setText(V + e.getActionCommand());
}
+现在我想了想,这似乎是OP想要的最合适最简单的答案。