搜索没有解决此问题。
我使用简单的代码显示带有自定义标题和接受按钮的JFileChooser对话框:
JFileChooser fc = new JFileChooser();
fc.showDialog(null,"MyText");
在Windows 7上,这可以正常工作:显示一个保存对话框,其中包含"保存"替换为" MyText"在“接受”按钮和对话框标题上。
但是,在Mac OS X上,只更改了“接受”按钮文本 - 对话框标题为空白。我使用的是Java SE 7和MacOS 10.8.5。
在上面两者之间插入这一行:
fc.setDialogTitle("MyText");
显示正确的标题。这是一个已知问题,和/或其他人是否可以重现此行为?
答案 0 :(得分:7)
您在Windows上遇到的不是预期的行为(因为没有记录),它只是一个实现副作用。
showDialog()
用于显示自定义对话框(例如,不是“打开”或“保存”对话框)。它有一个参数来指定批准按钮的文本。如果没有使用setDialogTitle()
方法设置标题,则实施任意选择使用批准按钮的文本作为Windows操作系统上的标题,但是这里没有记录,您不应指望这个工作。< / p>
如果您想要自定义标题,请使用setDialogTitle()
。如果您需要自定义批准按钮文本,请使用setApproveButtonText()
。显然,showDialog()
也会采用批准按钮的文字,在这种情况下,您无需事先致电setApproveButtonText()
。
如果您想要一个“打开”对话框,请使用showOpenDialog()
方法。如果需要“保存”对话框,请使用showSaveDialog()
。如果您想要自定义对话框,请仅使用showDialog()
。
答案 1 :(得分:4)
以下是UIManager
的所有可访问密钥(对于所有受支持的本机操作系统和标准LaF,其中一部分无法通过UIManager
中的循环访问),注意到成功是挥发性的,取决于Native OS和使用的LaF
您可以从JFileChooser
获取父级,转换为JDialog
将JFileChooser
添加到您自己的JDialog
(简单,不需要任何特殊设置,例如myDialog.add(myFileChooser);
+ myDialog.pack();
)
UIManager的所有可访问密钥(其中一部分......
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class Test extends JDialog {
private JFileChooser fc = null;
private JFrame bfcParent = null;
public Test(JFrame parent, boolean modal) {
super(parent, modal);
this.bfcParent = parent;
if (fc == null) {
fc = new JFileChooser();
fc.setAcceptAllFileFilterUsed(false);
fc.setLocale(Locale.ENGLISH);
UIManager.put("FileChooser.openDialogTitleText", "Open Dialog");
UIManager.put("FileChooser.saveDialogTitleText", "Save Dialog");
UIManager.put("FileChooser.lookInLabelText", "LookIn");
UIManager.put("FileChooser.saveInLabelText", "SaveIn");
UIManager.put("FileChooser.upFolderToolTipText", "UpFolder");
UIManager.put("FileChooser.homeFolderToolTipText", "HomeFolder");
UIManager.put("FileChooser.newFolderToolTipText", "New FOlder");
UIManager.put("FileChooser.listViewButtonToolTipText", "View");
UIManager.put("FileChooser.detailsViewButtonToolTipText", "Details");
UIManager.put("FileChooser.fileNameHeaderText", "Name");
UIManager.put("FileChooser.fileSizeHeaderText", "Size");
UIManager.put("FileChooser.fileTypeHeaderText", "Type");
UIManager.put("FileChooser.fileDateHeaderText", "Date");
UIManager.put("FileChooser.fileAttrHeaderText", "Attr");
UIManager.put("FileChooser.fileNameLabelText", "Label");
UIManager.put("FileChooser.filesOfTypeLabelText", "filesOfType");
UIManager.put("FileChooser.openButtonText", "Open");
UIManager.put("FileChooser.openButtonToolTipText", "Open");
UIManager.put("FileChooser.saveButtonText", "Save");
UIManager.put("FileChooser.saveButtonToolTipText", "Save");
UIManager.put("FileChooser.directoryOpenButtonText", "Open Directory");
UIManager.put("FileChooser.directoryOpenButtonToolTipText", "Open Directory");
UIManager.put("FileChooser.cancelButtonText", "Cancel");
UIManager.put("FileChooser.cancelButtonToolTipText", "CanMMcel");
UIManager.put("FileChooser.newFolderErrorText", "newFolder");
UIManager.put("FileChooser.acceptAllFileFilterText", "Accept");
fc.updateUI();
SwingUtilities.updateComponentTreeUI(fc);
}
}
public int openFileChooser() {
//fc.setDialogTitle("Load File);
fc.resetChoosableFileFilters();
int returnVal = 0;
fc.setDialogType(JFileChooser.OPEN_DIALOG);
returnVal = fc.showDialog(this.bfcParent, "Load File");
if (returnVal == JFileChooser.APPROVE_OPTION) { //Process the results.
System.out.println("Opened");
} else {
System.out.println("Failed");
}
return returnVal;
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("FileChooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp = new JPanel(new BorderLayout());
JButton openButton = new JButton("Open File");
final Test test = new Test(frame, true);
openButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
test.openFileChooser();
}
});
openButton.setEnabled(true);
jp.add(openButton, BorderLayout.AFTER_LAST_LINE);
frame.add(jp); //Add content to the window.
frame.pack();//Display the window.
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
//Turn off metal's use of bold fonts
createAndShowGUI();
}
});
}
}