0

几天前,在另一个线程上,我问了一个问题,即如何将“#Grades As : 5”等输出表示为输出“#Grade As : AAAA”。换句话说,我想将 5 个 A 的数量表示为一串重复五次的 A。用户 Sam Jones 非常有帮助地向我指出我应该使用“for”循环:

                  String gradeLetterA = "A";
                  for (int i=0; i<tempAs; i++) 
                  longStringA += gradeLetterA;

现在,让我向您展示我的 actionPerformed 方法:

        if (e.getSource() == clearScreen) {

        checkAndRecordData();

        Graphics g = chartPanel.getGraphics();

        g.setColor(Color.white);
        g.fillRect(20,20,410,52);
        g.setColor(Color.black);
        g.drawRect(20,20,410,52);
        g.setColor( Color.black );
        g.drawString( "", chartLeftXA, chartTopYA );



        if (e.getSource() == displayLongString) {

        Graphics g = chartPanel.getGraphics(); 

        g.setColor(Color.white);
        g.fillRect(20,20,410,52);
        g.setColor(Color.black);
        g.drawRect(20,20,410,52);
        g.setColor( Color.black );
        g.drawString( "Grade As: " + longStringA, 100, 50 );

我对你们这些好人的问题是:当我点击一个 JButton 按钮来刷新“AAAAA”的显示时,屏幕会变成空白,就像它应该的那样。但是,当我然后选择输入(例如)6 个 A 的值时,显示器不会给我 6 个字母 A,而是 11 个字母 A,即。啊啊啊啊。换句话说,我的 RESET(或刷新)JButton 只会清除屏幕,但不会擦除之前的值。相反,它将先前的值添加到当前值,当我第二次单击该按钮时,我得到了错误的 A 数。有人可以告诉我应该在 actionPerformed 方法中添加哪一行代码以使其正确吗?或者这条线是否必须进入创建 GUI 方法?我完全迷路了。任何帮助将不胜感激。

4

1 回答 1

0

问题似乎不在您的 actionPerformed 中。它在代码的第一部分。你自己说它不会删除以前的值。我认为您没有清除 longStringA

longStringA = "";
String gradeLetterA = "A";
for (int i=0; i<tempAs; i++)  {
    longStringA += gradeLetterA;
}

你总是写到屏幕上的同一个位置:(100, 50)。如果问题不是擦除之前的值,那么创建 5 As 然后创建 6 As 应该绘制 AAAAAA,前 5 As 可能比最后一个更粗一点(因为 AAAAAA 绘制在 AAAAAA 之上)。

于 2013-10-26T16:32:01.410 回答