一般我们要实现文件预览或者图片预览,都是通过setAccessory()来实现的。 但是我现在做的这个swing程序,要求在对话框的最低部将文件的描述显示一下,我觉得这样可能就必须继承JFileChooser了吧, 但是swing的源代码我找不到,请教各位高手,请给出建议。当然,给出代码更是感激不尽。
解决方案 »
- 求教c和java程序通信的问题,导致c程序coredump!
- 一家公司的面试题,大家帮忙研究一下。。。。
- 请问C语言中得malloc()在java中用什么方法可以代替?
- 求救!!!!!zip包里有中文文件名解压时报错
- 真正的专业级高速ASP CGI空间
- 请教
- 高手在干什么啊,怎么没人理我呢??????
- 编写程序如编写人生,有人和我的意见相同吗?
- 请问sqlserver2000的jdbc用于sqlserver7.0行吗??特邀路人甲
- .wav文件转换成.au文件出错!!!!!
- 请教高手一个<<thinking in java >>里的问题.我为什么编译这个程序时会出现这个问题呢
- 怎样将查询结果导出excel
我找到源码了,可是感觉JFileChooser的界面被封装了,想加一个自己的JTextArea在下面可能不太容易,大家有好办法么?
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.Date;import javax.swing.*;
public class T
{
public static void main(String[] args)
{
final JFileChooser jfc = new JFileChooser();
jfc.setMultiSelectionEnabled(false);
jfc.setControlButtonsAreShown(false);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 10, 10));
JButton okBtn = new JButton("确定");
JButton cancelBtn = new JButton("取消");
buttonPanel.add(okBtn);
buttonPanel.add(cancelBtn);
final JTextArea textArea = new JTextArea(5, 10);
textArea.setEditable(false);
JScrollPane textAreaSp = new JScrollPane(textArea);
JPanel prevPanel = new JPanel(new BorderLayout());
prevPanel.add(textAreaSp, BorderLayout.CENTER);
prevPanel.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
jfc.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e)
{
String prop = e.getPropertyName();
if(prop == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
File file = (File) e.getNewValue();
if (file == null || file.isDirectory()) {
textArea.setText("");
}
else {
String desc = "Name: " + file.getName() + "\n" +
"Size: " + file.length() + " Bytes \n" +
"Time: " + new Date(file.lastModified());
textArea.setText(desc);
}
}
}
});
final JFrame f = new JFrame();
okBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f.dispose();
System.out.println(jfc.getSelectedFile());
}
});
cancelBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f.dispose();
}
});
f.getContentPane().add(jfc, BorderLayout.NORTH);
f.getContentPane().add(prevPanel, BorderLayout.CENTER);
f.getContentPane().add(buttonPanel, BorderLayout.SOUTH); f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}