几天前,在一个不同的主题上,我问了一个问题,即如何将输出“#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方法?我完全迷失了。我们非常欢迎任何帮助。
答案 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之上绘制的)。