我尝试在用户点击JFrame的位置添加JDialog。如果我只使用一个屏幕,则以下JDialog代码可以工作:
public class PopupCanevas extends JDialog {
public PopupCanevas(JFrame frame, Point position) {
super(frame);
this.setLocation(position);
}
}
但是,如果我使用双显示器配置,我无法在屏幕上显示我的框架在用户点击位置的对话框。上面的代码将在所需的位置显示对话框,但在我的主屏幕上,无论我的框架位于什么屏幕。我尝试了以下方法:
this.setLocation(frame.getLocation(position));
它会在正确的屏幕上显示对话框,但是在左上角而不是在所需的位置。
如何获得所需的行为?
答案 0 :(得分:2)
您需要将鼠标点(从MouseEvent
)转换为屏幕坐标,例如MouseEvent#getLocationOnScreen
应该有效。
如果您想围绕该点居中对话,请确保在使用pack
/ size
preferredSize