- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个使用复合文档来存储其数据的系统。
一切都运行得很漂亮 - 我什至在打开的对话框上有漂亮的图标和双击打开功能。
我的问题是“另存为”对话框。如果我另存为一个不存在的复合文档,那么一切都很好。如果我双击一个现有的复合文档,那么我的代码会询问您是否要覆盖它,这也没有问题。
但是,如果您输入现有复合文档的名称并单击“保存”,则工作不正常,就像您单击“取消”一样。
我正在使用 FileFilter 和 FileView 来配置文件的所有显示和过滤。
这是我的主对话框打开函数:
public void saveAs() {
JFileChooser fc = new JFileChooser();
javax.swing.filechooser.FileFilter filter = new SketchFolderFilter();
fc.setFileFilter(filter);
javax.swing.filechooser.FileView view = new SketchFileView();
fc.setFileView(view);
fc.setCurrentDirectory(Base.getSketchbookFolder());
int rv = fc.showSaveDialog(this);
System.err.println("Option: " + rv);
if (rv == JFileChooser.APPROVE_OPTION) {
File newFile = fc.getSelectedFile();
System.err.println("Save As: " + newFile.getAbsolutePath());
if (newFile.exists()) {
int n = twoOptionBox(
JOptionPane.WARNING_MESSAGE,
"Overwrite File?",
Translate.w("Do you really want to overwrite the file %1?", 40, "\n", newFile.getName()),
"Yes", "No");
if (n != 0) {
return;
}
newFile.delete();
}
loadedSketch.saveAs(newFile);
}
}
如果您需要,这里是我的过滤器和 View 类:
public class SketchFileView extends javax.swing.filechooser.FileView {
public String getTypeDescription(File f) {
if (Base.isSketchFolder(f)) {
return Translate.t("UECIDE Sketch Folder");
}
return Translate.t("Directory");
}
public Boolean isTraversable(File f) {
if (Base.isSketchFolder(f)) {
return false;
}
return true;
}
public Icon getIcon(File f) {
if (Base.isSketchFolder(f)) {
ImageIcon icon = Base.loadIconFromResource("icon16.png");
return icon;
}
return null;
}
}
public class SketchFolderFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File f) {
if (Base.isSketchFolder(f)) {
return true;
}
if (f.isDirectory()) {
return true;
}
return false;
}
public String getDescription() {
return Translate.t("Sketch Folders");
}
}
当它工作时,我看到,在 stderr 上:
Option: 0
Save As: /foo/bar/baz
当它不起作用时,我看到:
Option: 1
据我所知,这纯粹是复合文档的问题。
重申场景:
5 是错误的(无论如何在我看来)。它应该返回 APPROVE_OPTION 并且 getSelectedFile() 应该返回一个 File 对象,该对象表示您键入的驻留在 JFileChooser 所在目录中的文件(即与 3 相同)。
缩小范围。看起来 JFileChooser 不喜欢当一个文件夹不可遍历并且你在选择器中输入它的名字并点击返回 - 它试图遍历它并且它悲惨地失败了,并且不知道如何处理它,所以只是将您从返回 0 的 JFileChooser 中转储。这是一个演示它的 SSCCE。在一个文件夹上运行这个,其中有一个名为“test.X”的文件夹,然后输入“test.X”。它应该会失败。
import java.io.*;
import javax.swing.*;
class fctest {
public class SketchFileView extends javax.swing.filechooser.FileView {
public Boolean isTraversable(File f) {
if (f.getName().endsWith(".X")) {
return false;
}
if (f.isDirectory()) {
return true;
}
return true;
}
}
public class SketchFolderFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File f) {
if (f.getName().endsWith(".X")) {
return true;
}
if (f.isDirectory()) {
return true;
}
return false;
}
public String getDescription() {
return "Sketch Folders";
}
}
public void saveAs() {
JFileChooser fc = new JFileChooser();
javax.swing.filechooser.FileFilter filter = new SketchFolderFilter();
fc.setFileFilter(filter);
javax.swing.filechooser.FileView view = new SketchFileView();
fc.setFileView(view);
fc.setCurrentDirectory(new File("."));
int rv = fc.showSaveDialog(null);
System.err.println("Option: " + rv);
if (rv == JFileChooser.APPROVE_OPTION) {
File newFile = fc.getSelectedFile();
System.err.println("Save As: " + newFile.getAbsolutePath());
}
}
public static void main(String[] args) {
fctest main = new fctest();
main.saveAs();
}
}
最佳答案
is if you type in the name of an existing compound document and click save, it acts as if you clicked cancel instead.
我认为您的意思是文件选择器关闭,但您希望它保持打开状态以便让用户有机会更改文件名。如果是这样,那么您可以覆盖 JFileChooser 的 approveSelection()
方法以显示确认对话框:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
public class FileChooserSave
{
private static void createAndShowUI()
{
final JFileChooser chooser = new JFileChooser( new File(".") )
{
public void approveSelection()
{
if (getSelectedFile().exists())
{
int n = JOptionPane.showConfirmDialog(
this,
"Do You Want to Overwrite File?",
"Confirm Overwrite",
JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION)
super.approveSelection();
}
else
super.approveSelection();
}
};
chooser.setSelectedFile( new File("something.rob") );
int returnVal = chooser.showSaveDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
System.out.println(chooser.getSelectedFile() );
}
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
编辑:
我添加了以下内容:
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
它允许您“直接选择化合物”,但您也可以选择非化合物目录,这是一些进步。
然后我重写文件选择器的“approveSelection”方法以仅批准复合目录,现在它似乎工作得相当好?
必须承认我不知道它为什么会这样做,所以它更像是一种蛮力方法。
这是我测试的代码:
import java.io.*;
import javax.swing.*;
class fctest {
public class SketchFileView extends javax.swing.filechooser.FileView
{
@Override
public Boolean isTraversable(File f) {
if (f.getName().startsWith("images")) {
return false;
}
if (f.isDirectory()) {
return true;
}
return false; // added this
}
}
public class SketchFolderFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File f) {
if (f.getName().startsWith("images")) {
return true;
}
if (f.isDirectory()) {
return true;
}
return false;
}
public String getDescription() {
return "Sketch Folders";
}
}
public void saveAs() {
JFileChooser fc = new JFileChooser()
{
public void approveSelection()
{
if (getSelectedFile().getName().startsWith("images"))
super.approveSelection();
}
};
javax.swing.filechooser.FileFilter filter = new SketchFolderFilter();
fc.setFileFilter(filter);
javax.swing.filechooser.FileView view = new SketchFileView();
fc.setFileView(view);
// fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.setCurrentDirectory(new File("."));
fc.setSelectedFile( new File("blog") );
int rv = fc.showSaveDialog(null);
System.err.println("Option: " + rv);
if (rv == JFileChooser.APPROVE_OPTION) {
File newFile = fc.getSelectedFile();
System.err.println("Save As: " + newFile.getAbsolutePath());
}
}
public static void main(String[] args) {
fctest main = new fctest();
main.saveAs();
}
}
关于java - JFileChooser "Save As"复合文档 - 覆盖现有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712309/
我正在从tangowithdjango学习django 。我试图理解 populate_rango.py 的代码。代码是: import os os.environ.setdefault('DJANG
我试图理解Rserve参数--save,-no-save和--vanilla之间的区别。我在文档或任何论坛中都没有看到任何描述这些效果的内容。有谁确切地知道这些是做什么的? 在OSX中,我需要指定其中
我正在使用 CoreData 制作一个基于文档的应用程序。我可以创建一个新文档,编辑该文档,然后保存它。文件已创建并可以打开。打开后,数据会正确加载。但是,一旦进行了初始保存,所有后续保存都不会执行任
下面提出了类似的问题 How to save complete web page 但目前还没有答案。预期的结果是得到很多文件,一些文件来存储图像等。 我使用了以下内容,它会弹出一个窗口说保存文件 va
我们一直在测试一种不同的保存方式。然而,结果并不像我们预期的那样。我们有创建调查的方法,每个调查有多个问题。我们测试了几个案例,它们都以相同的方式提交查询。 @Transactional class
我想了解JAP Repotitoty的详细信息。我创建了一个服务类、实体类和存储库类,如下所示(用 kotlin 编写)并执行了 ItemService#update 方法。 执行 item2Repo
我正在开发我的第一个 Firefox 扩展。我正在尝试将数据保存在浏览器的本地存储中(使用 Window.localStorage 很容易,但我正在关注 official recommandation
这让我很郁闷。我是 C Sharp 的新手,因此需要一些帮助。我的保存/另存为完全是胡说八道。 真的有两个问题: 如何在不弹出保存对话框的情况下保存对现有文件的更改?如果我单击“保存”,它会弹出一个对
我有一个代码可以将 XML 文件保存到我的目录中。它在我的本地主机和我的共享主机中实际上就像一个魅力,但它在我的 Linux VPS 中不起作用。 我总是遇到这个错误: 警告:DOMDocument:
有没有办法在 django 管理站点中同时“另存为”和“保存并添加另一个”? 最佳答案 我不认为按钮引用的 URL 有任何神奇之处,因此您可以通过简单地覆盖每个 http://docs.djangop
创建 playramework 的模型时,我们可以使用 save() 或 _save() 方法。为什么这两种方法在框架中都可用,原因是什么? (在这种情况下,他们做同样的事情 - 将对象保存到数据库)
我见过两个都调用 $save 的代码和 save到 $resource 的 Angular 。 有什么区别,你什么时候使用? 最佳答案 最佳解释===例子 : // by writing '{ id:
根据save bang your head, active record will drive you mad ,在特殊情况下我们应该避免使用 save! 和 rescue 习惯用法。鉴于此,假设模型
我的菜单栏中有两个按钮,其中包含“保存”和“另存为”按钮。但是,我目前拥有它们相同的代码,并且它会按当前方式保存,并提示用户要保存在哪里。我希望保存按钮仅保存而不提示对话框,除非文件尚不存在。 我尝试
我知道 models.Model 和 forms.ModelForm 都包含您可以覆盖的 .save() 方法。我的问题是它们如何以及何时用于保存对象以及以什么顺序。 最佳答案 ModelForm.s
我一直在尝试使用 freeze_graph函数来获取模型+权重/偏差,但在这个过程中,我发现我的初始网络似乎没有任何变量,尽管能够正确分类图像。我的代码如下: #!/usr/bin/python im
尝试使用 gTTS 模块将文本转换为语音并另存为 wav 文件。 我的代码: import gTTS text = "This is my text in the saving folder" tts
我有一个包含大约 50 个字段和两个提交按钮的表单,“保存”和“保存并提交”。如果用户单击“保存”,则插入用户在表格中填写的值。当用户单击“保存并提交”按钮时,它应该更新或插入用户在表单中填写的所有字
我是 Django 新手。我想知道 django 中的 ModelForm 和 Model 如何协同工作?我的意思是 ModelForm.save() 如何自动保存与之关联的模型?它如何从 reque
我有亲子关系: @Entity @Table(name = "user") public final class User { @Id @GeneratedValue(strategy
我是一名优秀的程序员,十分优秀!