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