2011-08-21 6 views
3

Мне нужно реализовать масштабирование для JDesktopPane, содержащегося в JScrollPane. Раньше я добился успеха, переопределив метод paintComponent(...) и позвонив scale(double,double).Масштабирование и масштабирование

Это не работает должным образом: в JInternalFrame «S и JPanel» ы масштаба, как задумано, но MouseListener 'ы для JLabel х и такой регистр в предварительно масштабируется местах. Что я могу сделать? Спасибо за чтение.

+0

Вы не можете масштабировать координату мыши? – Heisenbug

+0

Для jlabel с помощью mouseListener mouseEntered(), mouseExited(), ... все его методы регистрируются в немасштабированном месте. Выполнение некоторого масштабирования координат мыши, такого как mouseEvent.getX()/scaleFactor, не устранит эту проблему. –

ответ

3

ScaledPanel показывает, как масштабировать координаты мыши, используя явные методы преобразования: scaleX, scaleY, unScaleX и unScaleY. В качестве альтернативы вы можете использовать обратное преобразование, как показано на рисунке here.

+0

Я уже знал, как масштабировать координаты мыши, это не проблема. но спасибо в любом случае. –

+1

А теперь я вижу: вы будете смотреть 'mouseMoved()' и масштабировать координаты, чтобы определить свой собственный 'mouseEntered()'. – trashgod

+0

На экране много движущихся фигур, я надеялся, что мне не придётся прибегать к «обнаружению столкновения». Но все в порядке, вероятно, нет лучшего способа. –

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