Java 为什么JOptionPane.showInputDialog不需要父组件参数,而JOptionPane.showConfirmDialog需要父组件参数?

Java 为什么JOptionPane.showInputDialog不需要父组件参数,而JOptionPane.showConfirmDialog需要父组件参数?,java,swing,joptionpane,Java,Swing,Joptionpane,JOptionPane.showInputDialog的表单不需要父组件参数。JOptionPane.showConfirmDialog不支持。为什么会这样?因为有时程序员会希望允许用户引用父组件以获取showInputDialog的某种值。但是,showConfirmDialog只是用户读取然后丢弃的消息 我们显示“确认”对话框,以获得用户对其在父窗口上的操作的确认。 试图关闭主窗口的用户被询问是否真的要关闭它??或者,按下删除按钮将要求确认删除操作 简而言之,通过显示一个确认对话框,我们可以

JOptionPane.showInputDialog的表单不需要父组件参数。JOptionPane.showConfirmDialog不支持。为什么会这样?

因为有时程序员会希望允许用户引用父组件以获取showInputDialog的某种值。但是,showConfirmDialog只是用户读取然后丢弃的消息

我们显示“确认”对话框,以获得用户对其在父窗口上的操作的确认。 试图关闭主窗口的用户被询问是否真的要关闭它??或者,按下删除按钮将要求确认删除操作

简而言之,通过显示一个确认对话框,我们可以让用户知道他想要在父窗口上执行的任何关键操作,并要求用户确认

输入对话框通常不是这样

JOptionPane.showInputDialog的表单不需要父组件参数。JOptionPane.showConfirmDialog不支持

parentComponent
-确定对话框显示的帧如果为空,或者如果
父组件
没有帧,则使用默认帧

所以

为什么会这样


不是。我想我还是不明白。可以将父组件设置为null。文档只是说它用于设置对话框的框架,如果为null,则使用默认框架。我只是很惊讶,没有一个方法不包含父组件,并将null传递给最终被调用的任何方法。是的,你理解它。对于这样的问题,我只是假设Java库的创建者觉得把它放进去是不可行的。我不知道为什么。但是,例如,在messagedialog中必须显式输入“null”,并且在输入对话框中不输入“null”,这是不符合逻辑的。@SimonBaars显示输入对话框有6种方法,其中两种不需要父级。消息对话框总共只有3种方法。我认为后者更符合逻辑,但对于实际的逻辑,你必须询问设计师(编写选项窗格的人)。是的,我想,但对我来说,这看起来像是糟糕的设计。只包含一个只需要字符串的方法并调用showMessageDialog(其父级参数为null),而不是在javadoc中指示用户这样做并不难。