2013-10-26 2 views
0

Пару дней назад, в другой теме, я задал вопрос о том, как я могу представить вывод, например «#Grades As: 5 «в выход» #Grade As: AAAAA ». Другими словами, я хотел представить величину 5 A как строку из A, повторяющуюся пять раз. Пользователь Sam Jones очень услужливо указал мне, что я должен использовать «для» цикла:Как сбросить выходные данные на экране, а не просто очистить экран

    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. Другими словами, мой СБРОС (или обновление) JButton только очищает экран, но не удаляет предыдущее значение. Вместо этого он добавляет предыдущее значение к текущему значению, и я получаю НЕПРАВИЛЬНОЕ число А, когда я нажимаю кнопку второй раз. Может кто-нибудь, пожалуйста, скажите мне, какую строку кода я должен добавить к методу actionPerformed, чтобы сделать все правильно? Или эта линия должна войти в метод создания GUI? Я полностью потерян. Любая помощь будет с благодарностью приветствоваться.

ответ

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 был нарисован поверх AAAAA).

+0

@ Millie Smith: О, я вижу. Очень признателен ! – JCDyson

+0

@ Милли Смит: О, я вижу. Очень признателен ! – JCDyson

+0

Да, сейчас работает отлично. :) – JCDyson

Смежные вопросы