2015-05-31 2 views
0

Я пытаюсь запустить метод только один раз, когда я вызываю его в методе paint(), но когда я его называю обычно, он просто запускается снова и снова. Пример: выходВыполнить метод только один раз в paint() (Java)

private void someMethod() 
{ 
System.out.println ("Success"); 
} 
@Override 
public void paintComponent (Graphics g) 
{ 
someMethod(); 
repaint(); 
} 

Это будет «Успех» навсегда, я только могу вывести его один раз.

+3

'paintComponent (....)' вызывается, когда компонент перекрасили, вызов 'перекрасить()' в этом метод вызовет бесконечную рекурсию. – Titus

+1

метод 'repaint' называет' paintComponent' mehod. Поэтому, когда вы вызываете 'repaint' в' paintComponent', он переходит в бесконечный цикл. Поэтому он будет продолжать печатать 'Success' – Blip

+0

Использовать глобальное логическое значение, чтобы указать, что этот метод уже вызван и проверить, что логическое значение внутри метода – user

ответ

0

Я думаю, вы должны написать один и тот же мост

Попробуйте это:

public class someClass{ 
    private boolean hasDone = false; 
    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     if(!hasDone){ 
      someMethod(); 
      hasDone = true; 
     } 
    } 
} 
Смежные вопросы