如何使JOptionPane.showConfirmDialog默认没有选中?
我在Java中实现了一个“另存为”对话框,提示用户文件是否已存在,并且我希望默认情况下选择“否”选项。 我该怎么做呢?
这是我目前的代码:
JFileChooser chooser = new JFileChooser() { public void approveSelection() { File selectedFile = getSelectedFile(); if (selectedFile != null && selectedFile.exists( ) ) { int response = JOptionPane.showConfirmDialog( this, "The file " + selectedFile.getName() + " already exists." + " Do you want to replace the existing file?", getDialogTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (response != JOptionPane.YES_OPTION ) { return; } } super.approveSelection(); } };
使用此构造函数:
JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options, Object initialValue)
其中options
指定按钮,并使用initialValue
(其中一个options
值)指定默认值。
更新:您可以调用showOptionDialog
而不是showConfirmDialog
。 前者采用options
和initialValue
参数。
这是我想到的第一件事。
//Custom button text Object[] options = {"Yes", "No"}; JOptionPane.showOptionDialog(this, "The file " + selectedFile.getName() + " already exists. Do you want to replace the existing file?", getDialogTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]);
但可能有更好的方法。
如果您不想硬编码“是”和“否”(例如,当您的应用程序本地化为其他语言时),您可以使用UIManager资源:
UIManager.getString("OptionPane.yesButtonText", l) UIManager.getString("OptionPane.noButtonText", l)
这是我的解决方案:
import java.awt.Component; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.UIManager; public class NegativeDefaultButtonJOptionPane { public static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType) { List
对于上面的示例,它是JOptionPane.showOptionDialog
这些参数不能传递给showConfirmDialog
因为它没有它们。
更多的人可能正在寻找这个,所以为什么不提供“工作”的解决方案。