Java paint g方法仅打印数组中的最后一个字符

Java paint g方法仅打印数组中的最后一个字符,java,applet,awt,Java,Applet,Awt,您好,我有以下问题,我的小程序应该沿垂直线向小程序打印字符,但它只打印字符串中的最后一个字符。我尝试将repaint()方法移到循环外部的不同位置,但它仍然只打印出字符串中的最后一个字符。当我使用//System.out.print时(字母[i]);或//System.out.println(文本);要检查字符串或字符数组的内容,它会打印正确的输出,但我的paintg方法只打印最后一个字符形式数组 有什么建议吗 public class ExtensionExercise extends App

您好,我有以下问题,我的小程序应该沿垂直线向小程序打印字符,但它只打印字符串中的最后一个字符。我尝试将repaint()方法移到循环外部的不同位置,但它仍然只打印出字符串中的最后一个字符。当我使用//System.out.print时(字母[i]);或//System.out.println(文本);要检查字符串或字符数组的内容,它会打印正确的输出,但我的paintg方法只打印最后一个字符形式数组 有什么建议吗

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);
    }
}
公共类扩展Xercise扩展小程序实现ActionListener{
字符串文本;
字符串输出;
标签;
文本字段输入;
int xCoordinates=30,yCoordinates=50;
字符[];
公共void init(){
标签=新标签(“输入单词”);
添加(标签);
输入=新文本字段(10);
添加(输入);
input.addActionListener(this);
}
公开作废开始(){
text=“”;
}
@凌驾
已执行的公共无效操作(操作事件){
text=event.getActionCommand();
字母=text.toCharArray();

for(int i=0;i在
for
循环之后只调用
repaint
一次,因此显然只有最后一个字母会出现。所有字母选择逻辑都需要出现在
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;
    }
}
@覆盖
公共空间涂料(图g){
超级油漆(g);
for(int i=0;letters!=null&&i

注意:您不想增加
xCoordinates
偏移量来实现垂直输出

当然,这只是一个没有阻塞调用的短有限循环1)为什么要编写小程序?如果是由于老师的规范,请参考它们。2)为什么要使用AWT而不是Swing?请参阅我的答案,了解放弃使用AWT组件的许多好理由。