如何在屏幕上重置输出数据,而不仅仅是清除屏幕

时间:2013-10-26 16:08:04

标签: reset

几天前,在一个不同的主题上,我问了一个问题,即如何将输出“#Grades As:5”表示为输出“#Grade As:AAAAA”。换句话说,我想将数量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,而是ELEVEN字母A,即。 AAAAAAAAAAA。换句话说,我的RESET(或刷新)JButton只清除屏幕,但它不会删除以前的值。相反,它将先前的值添加到当前值,当我再次单击该按钮时,我得到错误的A值。有人可以告诉我我应该在actionPerformed方法中添加哪些代码来使其正确吗?或者这一行是否必须进入创建GUI方法?我完全迷失了。我们非常欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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