您好我有以下问题我的applet应该将字符打印到applet沿垂直线,但它只打印字符串中的最后一个字符。我尝试在循环内外的不同位置移动repaint()方法,但它仍然只打印出字符串中的最后一个字符。当我使用//System.out.print(letters [i]);或//System.out.println(text);检查string或charArray的内容是什么,它打印正确的输出,但我的paint g方法只打印最后一个char表单数组 有什么建议??
public class ExtensionExercise extends Applet implements ActionListener {
String text;
String output;
Label label;
TextField input;
int xCoordinates = 30, yCoordinates = 50;
char letters [];
public void init(){
label = new Label("Enter word");
add(label);
input = new TextField(10);
add(input);
input.addActionListener(this);
}
public void start(){
text = "";
}
@Override
public void actionPerformed(ActionEvent event) {
text = event.getActionCommand();
letters = text.toCharArray();
for(int i = 0; i<letters.length; i++){
text = String.valueOf(letters[i]);
xCoordinates +=10;
yCoordinates +=10;
}
repaint();
}
@Override
public void paint(Graphics g){
g.drawString(text, xCoordinates, yCoordinates);
}
}
答案 0 :(得分:1)
您只需在repaint
循环后调用for
一次,所以很明显只会显示最后一个字母。所有字母选择逻辑都需要出现在paint
方法本身
@Override
public void paint(Graphics g) {
super.paint(g);
for (int i = 0; letters != null && i < letters.length; i++) {
text = String.valueOf(letters[i]);
g.drawString(text, xCoordinates, yCoordinates);
// xCoordinates += 10; remove this
yCoordinates += 10;
}
}
请注意,您不希望增加xCoordinates
偏移量以实现垂直输出