我的最终目标是编写一个实用程序,让我可以在任何对话框中快速设置文件夹,从预设的"收藏夹"列表中进行选择.由于我只是一个业余爱好者,而不是专业人士,我更喜欢使用.NET,因为这是我最熟悉的.我确实意识到这些东西可能需要的东西比我在C#中可以做的更多.
我已经看到一些应用程序能够通过向工具栏添加按钮(例如:对话框助手)或者在标题栏旁边放置额外的按钮来扩展公共对话框(特别是对于另存为...和文件打开).最小化,最大化和/或关闭按钮.要么是不错的选择虽然我没有最模糊的想法从哪里开始.
我尝试过的一种方法是将文件夹名称从我写入的应用程序"拖动"到对话框上的文件名文本框,使用我从Corneliu Tusnea的Hawkeye运行时对象编辑器中拾取的鼠标钩子技术突出显示它,然后预先添加通过使用WM_SETTEXT对SendMessage进行pinvoking来获取路径名.它(有点)有效,但感觉有点笨拙.
任何关于技术或实施的建议都将非常感激.或者,如果现有的实用程序已经执行此操作,请告诉我们!
更新:说完所有内容后,我想我可能会使用现有的实用工具.不过,我想知道是否有是一种以编程方式做到这一点.
我想要一个文件对话框只允许目录,这是我一直在尝试的:
fileDialog = QtGui.QFileDialog()
fileDialog.setFileMode(QtGui.QFileDialog.ShowDirsOnly)
filename = fileDialog.getOpenFileName(self, 'Select USB Drive Location'))
Run Code Online (Sandbox Code Playgroud) 我需要自定义默认的Qt保存文件对话框:在其中添加一些选项.例如,在文件类型和保存/关闭按钮之间添加一些带有我自己的值的复选框.
Qt有什么方法可以做到吗?
我JFileChooser在Ubuntu 12.04下有问题.我使用此代码来设置外观:
javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
它看起来像这样.使用起来非常不舒服,看起来非常难看:
http://www9.picfront.org/token/9sRH/2012/05/15/2062476.jpg
我希望它看起来像这样:
http://www4.picfront.org/token/1lpa/2012/05/15/2062477.jpg
使用这篇文章中的提示,我尝试使用FileDialog而不是FileChooser.但是FileDialog当我在LOAD模式下启动并点击"打开"按钮时会引发异常.我创建对话框的方式:
FileDialog fd = new FileDialog(frame, "Test", FileDialog.LOAD);
fd.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
例外情况:
Exception in thread "Thread-0" java.lang.NullPointerException
at sun.awt.X11.GtkFileDialogPeer.setFileInternal(GtkFileDialogPeer.java:79)
at sun.awt.X11.GtkFileDialogPeer.run(Native Method)
at sun.awt.X11.GtkFileDialogPeer.showNativeDialog(GtkFileDialogPeer.java:172)
at sun.awt.X11.GtkFileDialogPeer.access$000(GtkFileDialogPeer.java:39)
at sun.awt.X11.GtkFileDialogPeer$1.run(GtkFileDialogPeer.java:114)
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu Linux 12.04下使用Oracle JDK7和Gnome 3(如果这有帮助的话).
有没有人知道我怎么能改善外观JFileChooser或者FileDialog工作?
我想打开一个FileDialog窗口进入用户主文件夹(即/ home/user或/ Users/unsername)
我使用System.getProperty读取用户主文件夹:
String homefolder = System.getProperty(user.home);
Run Code Online (Sandbox Code Playgroud)
变量包含正确的主文件夹.但是当我在FileDialog中设置filterpath时,它打开(在linux中)只有/ home级别没有进入用户主目录.
这是源代码:
FileDialog dialog = new FileDialog(shell);
dialog.setText("Choose a certificate");
String platform = SWT.getPlatform();
String homefolder = System.getProperty("user.home");
dialog.setFilterPath(homefolder);
Run Code Online (Sandbox Code Playgroud)
任何的想法?这是一个截图:

当我运行此代码时,文件选择器出现,然后当我完成它时,我无法输入条目小部件,直到我专注于另一个窗口然后回来.为什么会这样?
import tkinter as tk
from tkinter.filedialog import askopenfilename
location = ''
start = tk.Tk()
tk.Label(text='What is the name of your table?').pack()
box = tk.Entry(start, exportselection=0, state=tk.DISABLED)
box.pack()
button = tk.Button(start, text='OK', command=lambda e: None)
button.pack()
location = askopenfilename(defaultextension='.db',
title="Choose your database",
filetypes=[('Database Files', '.db'), ('All files', '*')])
box.config(state=tk.NORMAL)
start.mainloop()
Run Code Online (Sandbox Code Playgroud) 我试图用来tkinter filedialog在Mac中选择文件。
这种方式对一种文件类型可以正常工作:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx)])
Run Code Online (Sandbox Code Playgroud)
但是,我要选择xlsx或xls文件。我搜索并找到了问题文件对话框,tkinter和打开文件。我使用类似的方式,但是如果我更改为Mac,则无法在Mac上使用:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])
如何更改在文件对话框中选择xlsx或xls文件?
我有一个带有按钮/文本字段的JDialog供用户选择文件.这是代码:
FileDialog chooser = new FileDialog(this, "Save As", FileDialog.SAVE );
String startDir = saveAsField.getText().substring( 0, saveAsField.getText().lastIndexOf('\\') );
chooser.setDirectory(startDir);
chooser.setVisible(true);
String fileName = chooser.getFile();
Run Code Online (Sandbox Code Playgroud)
我的问题是,我没有看到所有文件过滤器,而是想提供自定义过滤器,例如Word文档或其他东西.我使用setFilenameFilter()设置了一个自定义的FilenameFilter,但它似乎不起作用.我注意到它在文档中说自定义过滤器在Windows中不起作用(这在Windows XP/Vista/7中运行).这是我对过滤器的实现:
chooser.setFilenameFilter( new geFilter() );
public class geFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return name.endsWith( ".doc" ) || name.endsWith( ".docx" );
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里做错了吗?此外,我想在框中显示一个描述,如"Microsoft Word(*.doc*.docx)",但我不知道该怎么做.
任何和所有的帮助表示赞赏.
假设我输入了[type = file]元素,我想拦截onclick事件并阻止在不满足条件时出现文件对话框.可能吗?为什么,如果 - 不是吗?