MouseEvent
s являются контекстуальными для компонента, который их создал. Это означает, что когда вы отпускаете кнопку мыши, источником события является тот же компонент, на который вы нажали.
Информация о местоположении, возвращаемая MouseEvent
, также находится в контексте компонентов источника (0x0 - верхняя левая позиция исходного компонента).
Это означает, что при использовании Component d = SwingUtilities.getDeepestComponentAt(this.pole, me.getX(), me.getY());
, координаты не в pole
контексте, но источник Component
s, что, вероятно, означает, что pole
не содержит эти координаты и метод возврата null
-х.
Как JavaDocs говорит «Если родитель не содержит указанное место, то нуль возвращается»
Вы можете попробовать перевод MouseEvent
местоположение в контексте pole
используя что-то вроде ...
MouseEvent evt = SwingUtilities.convertMouseEvent(e.getComponent(), e, textField);
или
Point p = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), textField);
Но по-прежнему нет никакой гарантии, что точка будет в пределах компонентов.
Вы могли бы еще проверить положение точки по отношению к pole
используя что-то больше похоже на ...
Rectangle bounds = textField.getBounds();
bounds.setLocation(0, 0);
if (bounds.contains(p)) {
// Finally...
}
или, возможно, ...
Point p = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), pole);
Component dropPoint = SwingUtilities.getDeepestComponentAt(pole, p.x, p.y);
Но это все еще может вернуться null
если вы перетаскиваете за пределы прямоугольника pole
...
[JavaDocs] (http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUti lities.html # getDeepestComponentAt (java.awt.Component,% 20int,% 20int)) say * «Если родитель не содержит указанное местоположение, возвращается значение null» * – MadProgrammer
Это может быть один из тех случаев, когда фактическое использование drop -n-drop API стоит усилий – MadProgrammer
Что-то вроде [this] (http://stackoverflow.com/questions/11201734/java-how-to-drag-and-drop-jpanel-with-its-components/11443501# Например, 11443501). Вам было бы интересно извлечь текст с ярлыка, но основная идея звучит – MadProgrammer