Переопределение AWT и сохранение графики

-Всем привет! Я делаю Java-апплет, имитирующий интерференцию волн, который я почти закончил (будет лицензирован под лицензией GPL). Однако у меня есть два вопроса относительно цикла рисования AWT, на которые мне трудно найти ответы.

  1. Я хочу сделать наложение «о», которое появляется, когда я нажимаю кнопку. Я хочу сделать это так, чтобы нарисовать все окно апплета моим статическим сообщением и объектами легенды. Проблема заключается в том, что компоненты AWT не могут отрисовываться на переднем плане без использования метода remove(). Есть ли способ временно остановить AWT от рисования?

  2. Для моего режима стоячих волн я хочу, чтобы маркеры узлов и пучностей рассчитывались и рисовались на вторичной графике каждый раз, когда стоячая волна достигает максимальной амплитуды (все это я могу сделать сам), но рисовались на первичной графике (и, таким образом, отображается) каждый цикл окраски. Может ли кто-нибудь объяснить шаги для этого? Я предполагаю, что это будет включать создание второго графического объекта, отрисовку к нему один раз, а затем отрисовку его к основной графике каждый цикл.

Если вы сможете ответить хотя бы на один из моих вопросов, буду очень благодарна!

Привет, Джек Эллисон


person Jwballison    schedule 08.07.2012    source источник


Ответы (1)


Отвечая на ваш первый вопрос:

Вы не можете отключить метод paint()/paintComponent(), если вы включили его в свой код. Если он есть, он запускается. Однако вы можете создать флаг, чтобы материал отображался только в том случае, если он установлен. Позвольте мне показать вам, что я имею в виду:

boolean flag;

...

public void paintComponent(Graphics comp) {
    if (flag) {
        Graphics2D comp2D = (Graphics2D) comp;
        //drawing statements
    }
}

public void actionPerformed(ActionEvent event) {
    flag = true;
    repaint();
}
person Bennett    schedule 08.07.2012