在与所需位置的JFrame父级相同的屏幕中显示JDialog

问题描述 投票:1回答:1

我正在尝试在用户点击JFrame的位置添加JDialog。如果我只使用一个屏幕,则以下JDialog代码可以正常工作:

public class PopupCanevas extends JDialog {

    public PopupCanevas(JFrame frame, Point position) {
        super(frame);
        this.setLocation(position);
    }
}

但是,如果我使用双显示器配置,我无法在屏幕上显示我的框架在用户单击位置的对话框。上面的代码将在所需的位置显示对话框,但在我的主屏幕上,无论我的框架位于什么屏幕。我尝试了以下方法:

this.setLocation(frame.getLocation(position));

它将在正确的屏幕上显示对话框,但是在左上角而不是在所需的位置。

我怎样才能获得理想的行为?

java swing jframe jdialog multiple-monitors
1个回答
2
投票

你需要将鼠标点(从MouseEvent)转换为屏幕坐标,像MouseEvent#getLocationOnScreen应该有效。

如果你想围绕该点居中对话,请确保在使用qazxsw poi / qazxsw poi之前在对话框中使用qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.