Я пытаюсь добавить JDialog в том месте, где пользователь нажал на JFrame. Если я использую только один экран, следующий код JDialog работы:Показать JDialog на том же экране, что и его родительский JFrame в нужном месте
public class PopupCanevas extends JDialog {
public PopupCanevas(JFrame frame, Point position) {
super(frame);
this.setLocation(position);
}
}
Однако, если я использую конфигурацию двойного монитора, я не в состоянии показать диалог на экране, где находится мой кадр в позиции, на которую пользователь нажал. Вышеприведенный код отобразит диалог в нужном месте, но на моем главном экране, независимо от того, на каком экране находится мой кадр. Я попытался следующие:
this.setLocation(frame.getLocation(position));
Он покажет диалог на нужный экран, но в левом верхнем углу, а не в нужном месте.
Как я могу получить желаемое поведение?
'setLocationRelativeTo'? – MadProgrammer
@MadProgrammer Он показывает JDialog на том же экране, что и его родительский JFrame где-то по центру. Тем не менее, я все еще не могу разместить его в нужном месте. У вас есть идея? – TheWanderingMind
О, ладно, утренний мозг. Вам нужно преобразовать точку мыши (от MouseEvent) в координаты экрана, что-то вроде MouseEvent # getLocationOnScreen должно работать, если вы хотите центрировать диалог вокруг точки, убедитесь, что вы используете пакет в диалоговом окне, прежде чем использовать его размер/предпочтительный размер – MadProgrammer