Swing 用到 JFileChooser 问题

小小都不懂 2010-02-25 04:57:55
JFileChooser 下如何修改它自己的图标(就是title的java默认图标)

我想换成自己的图片

...全文
338 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
YBBPS1109 2010-02-26
  • 打赏
  • 举报
回复
public class Test extends JFileChooser {

public Test() {
}

protected JDialog createDialog(Component parent) throws HeadlessException {
JDialog dialog = super.createDialog(parent);
dialog.setLocation(500, 200);
dialog.setVisible(true);
return dialog;
}

public static void main(String[] args) throws IOException {
Test test = new Test();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setIconImage(ImageIO.read(new File("D:\\212217668.gif")));
test.createDialog(frame);
}
}
qianzhimeiying 2010-02-26
  • 打赏
  • 举报
回复
引用 13 楼 opentheoo 的回复:
关键我这个JFileChooser 放的位置有点特殊
我是在主jframe 中加了一个jpanel  在jpanel 中加了一个jbuttion
调用了一个A类 在A类里面 我用到了JFileChooser

不管主jframe 在哪里,总之在JFileChooser的showDialog之前新声明一个jframe,
不要设置newframe为visible,然后showDialog(newframe)

JFrame j = new JFrame();
j.setLocation(frame.getLocation());
j.setIconImage(Toolkit.getDefaultToolkit().createImage("E:/my1.png"));
int result = dialog.showOpenDialog(j);

这样弹出的对话框的位置可能不会与主jframe位置同步...
小小都不懂 2010-02-26
  • 打赏
  • 举报
回复
JFileChooser 这个东东 都不会用吗?
小小都不懂 2010-02-26
  • 打赏
  • 举报
回复
来人呀 帮帮忙吧!!!!!
小小都不懂 2010-02-26
  • 打赏
  • 举报
回复
关键我这个JFileChooser 放的位置有点特殊

我是在主jframe 中加了一个jpanel 在jpanel 中加了一个jbuttion

调用了一个A类 在A类里面 我用到了JFileChooser

以上大家说的可能在主Jframe 中是好用的
但是经过这么多了
我只想问问有没有什么方法直接给JFileChooser 的图标换成自己的呢?
小小都不懂 2010-02-26
  • 打赏
  • 举报
回复
引用 16 楼 qianzhimeiying 的回复:
引用 13 楼 opentheoo 的回复:关键我这个JFileChooser 放的位置有点特殊我是在主jframe 中加了一个jpanel  在jpanel 中加了一个jbuttion 调用了一个A类 在A类里面 我用到了JFileChooser
不管主jframe 在哪里,总之在JFileChooser的showDialog之前新声明一个jframe,
不要设置newframe为visible,然后showDialog(newframe)

JFrame j = new JFrame();
j.setLocation(frame.getLocation());
j.setIconImage(Toolkit.getDefaultToolkit().createImage("E:/my1.png"));
int result = dialog.showOpenDialog(j);

这样弹出的对话框的位置可能不会与主jframe位置同步...


你的办法可行 谢谢 结贴
focusforce 2010-02-25
  • 打赏
  • 举报
回复
引用 8 楼 opentheoo 的回复:
loginjframe 是一个主画面

在这里有个写入文件的按钮

点击以后 进入下一个类 A 中
在A 中 我调用了JFileChooser 方法是
JFileChooser c = new LicenseFileChooser();

我想你说的父窗体 这时候已经不在了吧
不知道我说的对不对


在main函数所在的class,假设为App,利用单例模式,让外部可以获取loginjframe。
private static App instance = null;
private static JFrame loginjframe;
public class App
{
public static App getApplication()
{
if (instance == null)
{
instance = new App();
}
return instance;
}

public JFrame getMainFrame()
{
return loginjframe;
}
public static void main(String[] args)
{
loginjframe = new JFrame();
...
}
}

外部获取父窗体:App.getApplication().getMainFrame();
给JDialog、JWindow设置父窗体,对于其图标、相对位置都是非常好的。
lryxxh 2010-02-25
  • 打赏
  • 举报
回复
看一下你的主界面frame的图标,只要设置那个了frame的图标,JFileChooser弹出窗口的那个图标就会自动改了
铁匠梁老师 2010-02-25
  • 打赏
  • 举报
回复

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class ShowImage extends JPanel implements ActionListener {

private static final long serialVersionUID = 1L;

static JFrame frame = null;

private JButton open;
private String filePath;
private BufferedImage image;
private static ShowImage show;

public static ShowImage singleton() {
if (show == null)
show = new ShowImage();
return show;
}

private ShowImage() {
open = new JButton("open");
setLayout(new BorderLayout());
add(open, BorderLayout.SOUTH);
open.addActionListener(this);

}

private void init(String str) {
FileInputStream input;
try {
input = new FileInputStream(str);
image = ImageIO.read(input);
repaint();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private static void createAndShowGUI() {
// Create and set up the window.
frame = new JFrame("JFileChooserDemo");
//换成自己的图标路径
frame.setIconImage(Toolkit.getDefaultToolkit().createImage("E:/工作/My Documents/My Pictures/logo.png"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add content to the window.
frame.add(singleton());
frame.setSize(300, 400);
frame.setTitle("QRCode");

// Display the window.
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
});
}

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
g.drawImage(image, 26, 26, this);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == open) {
JFileChooser dialog = new JFileChooser();
int result = dialog.showOpenDialog(frame);
if (result == JFileChooser.APPROVE_OPTION) {
File file = dialog.getSelectedFile();
filePath = file.getPath();
init(filePath);
}
}
}
}
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
人呢都那去了呢

希望来点人气呀
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
loginjframe 是一个主画面

在这里有个写入文件的按钮

点击以后 进入下一个类 A 中
在A 中 我调用了JFileChooser 方法是
JFileChooser c = new LicenseFileChooser();

我想你说的父窗体 这时候已经不在了吧
不知道我说的对不对
focusforce 2010-02-25
  • 打赏
  • 举报
回复
先看看你的父窗体的图标设置上去了没有,还有留意下loginjframe是否是模态的。
在loginjframe布什模态的情况下,只要./res/Logo.jpg设置上去了,下面的方法显示的JFileChooser是一定新图标的。
fc.showOpenDialog(loginjframe);
chooser.showSaveDialog(loginjframe);
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
引用 5 楼 ybbps1109 的回复:
引用 3 楼 focusforce 的回复:设置父窗体,它会使用父窗体的图标。
ding

你顶什么呀 现在都没好用

哎。。。。。。。。。。。。。
YBBPS1109 2010-02-25
  • 打赏
  • 举报
回复
引用 3 楼 focusforce 的回复:
设置父窗体,它会使用父窗体的图标。

ding
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
我的父窗体已经设置了

Image image =Toolkit.getDefaultToolkit().getImage("./res/Logo.jpg");
loginjframe.setIconImage(image);

但是我有个写入文件的操作按钮
点完以后是就 调用 JFileChooser 它了
但是它的图标还是java 的
focusforce 2010-02-25
  • 打赏
  • 举报
回复
设置父窗体,它会使用父窗体的图标。
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
来人呀 帮帮忙
过年过的吗
都没人了呢
小小都不懂 2010-02-25
  • 打赏
  • 举报
回复
自己来!!!!! 回复内容太短了!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧