我看到答案说该图标是从父级获取的,但它对我不起作用。 我有一个 JDialog 类,我在其中设置图标:
this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass() .getClassLoader().getResource("Icons/favicon.png")));
我这样加载它是因为我将使用 Jar。
这就是我初始化 FileChooser 的方式:
fc = new MyFileChooser();
这是 MyFileChooser 类的构造函数:
public MyFileChooser() {
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Archivo wav (*.wav)", "wav");
this.setDialogTitle("Elige la cancion a añadir");
this.setFileFilter(filter);
this.setAcceptAllFileFilterUsed(false);
}
这就是我在单击按钮时显示 FileChooser 的方式:
if (chooseFileButton == e.getSource()) {
// got it from https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/FileChooserDemoProject/src/components/FileChooserDemo.java
int returnVal = fc.showOpenDialog(this);
}
我认为“this”指的是 Dialog 类。
编辑:我还尝试过“AddDialog.this”是 AddDialog JDialog 的类名称
这是一个适用于 Windows 的完整示例。我在动作侦听器内显示了文件对话框,因此我必须使用外部类名,
Worms.this
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.util.List;
import java.awt.Color;
public class Worms extends JFrame{
public void buildGui(){
BufferedImage img = new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.setColor(Color.RED);
g2d.fillOval(0, 0, 64, 64);
g2d.dispose();
setIconImage( img );
JButton click = new JButton("click");
click.addActionListener( evt ->{
JFileChooser chooser = new JFileChooser();
int value = chooser.showOpenDialog(Worms.this);
});
add(click);
pack();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args){
new Worms().buildGui();
}
}
也许你可以检查一下它是否完整、可编译。您的问题可能是操作系统/JVM 的怪癖,因此您可能必须包含更多信息。