JFileChooser 标题图标未更改

问题描述 投票:0回答:1

我看到答案说该图标是从父级获取的,但它对我不起作用。 我有一个 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 的类名称

java swing jfilechooser jdialog
1个回答
1
投票

这是一个适用于 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 的怪癖,因此您可能必须包含更多信息。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.