gpt4 book ai didi

java - 覆盖 Swing 类的 toString()

转载 作者:行者123 更新时间:2023-12-02 05:33:27 25 4
gpt4 key购买 nike

我想重写 FileFilter 对象的 toString() 方法。我有这段代码

JFileChooser saveFile = new JFileChooser();
saveFile.setAcceptAllFileFilterUsed(false);
saveFile.setMultiSelectionEnabled(false);
saveFile.setFileFilter(new FileNameExtensionFilter("PNG", ".png"));
String type = saveFile.getFileFilter().toString();
System.out.println(type);

它打印出类似于javax.swing.filechooser.FileNameExtensionFilter@39cc65b1[description=PNG extensions=[.png]]的内容。我的目标是创建一个重写的 toString 方法,因此我只能得到 .png 部分。
我知道有更有效的方法来完成这项确切的任务,并且我知道基本的字符串函数来获取我需要的部分,但我的目标是使用重写的方法来完成它。

最佳答案

my goal is to do it with an overridden method.

由于下述多种原因,这是不可能的。唯一的方法是通过组合,而不是通过继承。

您只能在您拥有的类中重写方法。由于您不拥有 FileNameExtensionFilter(由 JFileChooser 返回的 FileFilter 实现),因此您无法覆盖其 toString 方法。

此外,FileNameExtensionFilter is a final class ,因此您不能重写它的任何方法。

在这种情况下唯一可用的方法是创建您自己的 FileFilter 包装 FileNameExtensionFilter,并将您从 JFileChooser 获得的过滤器传递给它。您将拥有此类,因此您可以根据需要重写其 toString:

class FileFilterWrapper {

private final FileFilter innerFilter;

public FileFilterWrapper(FileFilter innerFilter) {
this.innerFilter = innerFilter;
}

@Override
public String toString(){
// Use innerFilter properties to produce the desired String
return ...
}
}

关于java - 覆盖 Swing 类的 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com