Я сделал то же самое, чтобы записать скринкаст приложений, использующих компоненты SWT.
Есть 1 слушатель, который может выполнить эту работу:
public class ShellControlsListener implements ControlListener {
@Override
public void controlMoved(ControlEvent e) {
// You will need to retrieve new coordinates
}
@Override
public void controlResized(ControlEvent e) {
// Do you work here: retrieve new bounds
}
}
Я предположил, что вы можете использовать такого типа слушателя с awt / swing.
Получение оконных координат и границ не является реальной проблемой при 2 ~ 4 FPS. Я могу записывать и кодировать со скоростью 25 кадров в секунду, используя java.awt.Robot. (Получение границ окна происходит быстрее по сравнению с Robot.createScreenCapture (java.awt.Rectangle).
Если вам действительно нужны представления, вам нужно получить границы только тогда, когда ваше окно перемещается или изменяется; нет необходимости устанавливать размер окна не изменяемым (если вы не хотите использовать снимки экрана для создания видео, поскольку в этом случае все снимки экрана должны иметь одинаковые размеры).