[英]JButton Array with actionListener…trouble printing out result
基本上我已經為字母表的每個字母創建了一個數組,然后將它添加到JButton數組中。 這工作正常,但我現在嘗試添加一個動作監聽器,我成功地工作。
但是,它有效,因為我有26個if語句來檢查每個按鈕是否被按下因此為什么我嘗試添加for循環。
現在我按下按鈕,打印出關於JbUTTON屬性的大量垃圾。 我哪里可能出錯?
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]);
}
}
}
}
如果您需要返回被按下的字母:
screenArea.setText(V + AlphaButton[i].getText);
您需要覆蓋AlphaButton
toString
方法
// your class
public class AlphaButton {
@Override
public String toString() {
return "This is an AlphaButton"; // or whatever output you want it to say
}
}
為什么不簡單地做:
public void actionPerformed(ActionEvent e) {
String V = screenArea.getText();
screenArea.setText(V + e.getActionCommand());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.