有人能展示简单的javaswing代码/web资源吗?当jframe的按钮被点击时,它会将弹出对话框的中心对齐到现有jframe窗口的顶部吗?
2ekbmq321#
哦..很简单:假设您有一个包含jdialog的jframe,并且您希望jdialog(打开时)正好位于jframe的顶部。因此,在jdialog构造函数中,应该有如下内容:
public class MyDialog extends JDialog public MyDialog(JFrame parent) { super.setLocationRelativeTo(parent); // this will do the job }
换句话说,将jframe指针传递给对话框,并调用setlocationrelativeto(…);方法。
42fyovps2#
我通常调用以下方法:
dialog.setLocationRelativeTo(parent);
链接到javadocs
qybjjes13#
你在说什么样的弹出对话框?如果您使用的是joptionpane或类似的东西,那么将其父组件设置为jframe,它将自动居中于jframe窗口的顶部。
JOptionPane.showMessageDialog(frame, "Hello, World!");
如果要创建自己的jdialog,可以使用jframe.getlocation()获取jframe的位置,使用jframe.getsize()获取其大小。从那开始,数学就很简单了;只需计算jframe的中心并减去jdialog宽度/高度的一半就可以得到对话框的左上角。如果您的jdialog尚未呈现,jframe.getsize()可能会为您提供零大小。在这种情况下,可以使用jdialog.getpreferredsize()来确定它在屏幕上呈现后的大小。
ippsafx74#
如果你想在窗口上有一个模态和居中的对话框。。。在对话框的构造函数中:
class CustomDialog extends JDialog { public CustomDialog(Frame owner, String title, boolean modal) { super(owner, title, modal); setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); ... setSize(150, 100); setLocationRelativeTo(owner); } }
显示对话框(使用按钮等):
public void actionPerformed(ActionEvent e) { dialog.setVisible(true); }
4条答案
按热度按时间2ekbmq321#
哦..很简单:
假设您有一个包含jdialog的jframe,并且您希望jdialog(打开时)正好位于jframe的顶部。
因此,在jdialog构造函数中,应该有如下内容:
换句话说,将jframe指针传递给对话框,并调用setlocationrelativeto(…);方法。
42fyovps2#
我通常调用以下方法:
链接到javadocs
qybjjes13#
你在说什么样的弹出对话框?如果您使用的是joptionpane或类似的东西,那么将其父组件设置为jframe,它将自动居中于jframe窗口的顶部。
如果要创建自己的jdialog,可以使用jframe.getlocation()获取jframe的位置,使用jframe.getsize()获取其大小。从那开始,数学就很简单了;只需计算jframe的中心并减去jdialog宽度/高度的一半就可以得到对话框的左上角。
如果您的jdialog尚未呈现,jframe.getsize()可能会为您提供零大小。在这种情况下,可以使用jdialog.getpreferredsize()来确定它在屏幕上呈现后的大小。
ippsafx74#
如果你想在窗口上有一个模态和居中的对话框。。。
在对话框的构造函数中:
显示对话框(使用按钮等):