java文件选择器禁用主工具栏中的功能和选项
我想禁用顶部工具栏中的一些选项——“主页”、“上一级”、“新建文件夹”。 在我的代码中,只有“新文件夹”起作用,它被禁用。我尝试在所有按钮上使用此方法,但不起作用,代码如下:java文件选择器禁用主工具栏中的功能和选项,java,swing,jfilechooser,Java,Swing,Jfilechooser,我想禁用顶部工具栏中的一些选项——“主页”、“上一级”、“新建文件夹”。 在我的代码中,只有“新文件夹”起作用,它被禁用。我尝试在所有按钮上使用此方法,但不起作用,代码如下: javax.swing.Action newFolder = fileChooser.getActionMap().get("New Folder"); newFolder.setEnabled(false); javax.swing.Action home = fileChooser.getActionMap().get
javax.swing.Action newFolder = fileChooser.getActionMap().get("New Folder");
newFolder.setEnabled(false);
javax.swing.Action home = fileChooser.getActionMap().get("Home");
home.setEnabled(false);
javax.swing.Action upOneLevel = fileChooser.getActionMap().get("Up One Level");
upOneLevel.setEnabled(false);
这是一个基于图标搜索的暴力方式,灵感来源于此
publicstaticvoidmain(最终字符串[]args){
JFileChooser cho=新的JFileChooser();
禁用按钮(cho,“FileChooser.homeFolderIcon”);
禁用按钮(cho,“FileChooser.upFolderIcon”);
禁用按钮(cho,“FileChooser.newFolderIcon”);
cho.showOpenDialog(空);
}
公共静态void disableButton(最终容器c、最终字符串iconString){
int len=c.getComponentCount();
对于(int i=0;i
以下是JFileChooser
的UIManager
图标标识符列表:
FileView.directoryIcon
FileView.fileIcon
FileView.computerIcon
FileView.hardDriveIcon
FileView.floppyDriveIcon
FileChooser.newFolderIcon
FileChooser.upFolderIcon
FileChooser.homeFolderIcon
FileChooser.detailsViewIcon
FileChooser.listViewIcon
请查看以了解不同的方法
它只允许用户浏览指定目录下的目录。“向上一个”按钮被禁用。“主页”按钮将带您返回指定的控制器
您仍然需要显示“新建文件夹”按钮。您测试了多少外观和感觉?有多少个平台?问题是,这种解决方案往往很快就会崩溃,可能与L&F有关。对于您的actionMap方法,您应该在地图中打印不同的键,在我的例子中,上升一级的键是“上升”。不幸的是,我在地图上看不到任何与“主页”按钮对应的键。@MadProgrammer:我承认我没有在当前平台之外的其他平台上测试过这个,以及默认的L&F。如果我们试图提供的任何答案需要在任何现有平台和任何现有L&F或任何现有
Whateva
上进行彻底测试,则不会建议任何答案……不会有任何答案。@Berger这是我的观点,除了开发您自己的外观和感觉代表外,没有其他“正确”的解释
public static void main(final String[] args) {
JFileChooser cho = new JFileChooser();
disableButton(cho, "FileChooser.homeFolderIcon");
disableButton(cho, "FileChooser.upFolderIcon");
disableButton(cho, "FileChooser.newFolderIcon");
cho.showOpenDialog(null);
}
public static void disableButton(final Container c, final String iconString) {
int len = c.getComponentCount();
for (int i = 0; i < len; i++) {
Component comp = c.getComponent(i);
if (comp instanceof JButton) {
JButton b = (JButton) comp;
Icon icon = b.getIcon();
if (icon != null
&& icon == UIManager.getIcon(iconString)) {
b.setEnabled(false);
}
} else if (comp instanceof Container) {
disableButton((Container) comp, iconString);
}
}
}