一个关于JFileChooser的问题

icestari 2007-08-27 03:14:49
今天试着写了个Swing,但是JFileChooser始终都报一个错...大虾们帮忙看看..

import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class CreateUI{

static String displayTxt = "";
JTextField tf = null;
public Component createCom(){
JPanel panel = new JPanel();
tf = new JTextField();
tf.setColumns(20);
JButton Fchoose = new JButton("Choose Directory");
Fchoose.setMnemonic(KeyEvent.VK_D);
ActionListener chooser = new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

String txt = tf.getText();
JFileChooser jfc = null;
if(txt != null && txt.length()!=0){
File file = new File(txt);
if(!file.exists()){
txt = "";
}
}else{
txt = "";
}
if(txt.length() ==0){
try{
jfc = new JFileChooser("c:\\");
}catch(Exception e){
System.out.println("这儿报错了.....");
e.printStackTrace();
}
}else{
jfc = new JFileChooser(txt);
}
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int rtnVal = jfc.showOpenDialog(null);
if(rtnVal == JFileChooser.APPROVE_OPTION){
tf.setText(jfc.getSelectedFile().getAbsolutePath());
}

}

};
Fchoose.addActionListener(chooser);
JButton jb1 = new JButton("Convert HTM To txt");
jb1.setMnemonic(KeyEvent.VK_H);
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
boolean flag = true;
String txt = "";
if(tf.getText() != null && tf.getText().length()!=0){
txt = new String(tf.getText());
File file = new File(txt);
if(!file.exists() || !file.isDirectory()){
flag = false;
}
}
if(flag){
HtmConvert convert = new HtmConvert();
displayTxt = convert.convert(txt);
}
}


});
JButton jb2 = new JButton("Conver ansi to UTF-8");
jb2.setMnemonic(KeyEvent.VK_A);
ActionListener ac1 = new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
boolean flag = true;
String txt = "";
if(tf.getText() != null && tf.getText().length()!=0){
txt = new String(tf.getText());
File file = new File(txt);
if(!file.exists() || !file.isDirectory()){
flag = false;
}
}
if(flag){
AnsiToUTF convert = new AnsiToUTF();
displayTxt = convert.convert(txt);
}
}

};
jb2.addActionListener(ac1);
panel.setLayout(new FlowLayout());
panel.add(tf);
panel.add(Fchoose);
panel.add(jb1);
panel.add(jb2);
return panel;
}
}

Main函数:
public static void main(String[] args) {
JFrame jf = new JFrame("Convert");
CreateUI create = new CreateUI();
Component comp = create.createCom();
jf.getContentPane().add(comp);
jf.pack();
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
}
...全文
386 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
icestari 2007-09-29
  • 打赏
  • 举报
回复
恩..
我一直认为可能是JDK某个地方的问题
这个程序怎么看都没问题....
不过现在也不搞这个了
太忙了,才有空结贴.
边城狂人 2007-08-30
  • 打赏
  • 举报
回复
你设置了皮肤的吗?是不是这里出的问题。
这个错应该是出在JDK内部,可能是其它地方引起的,最有可能的地方可能就是设置UI Style了。
tangge1010 2007-08-30
  • 打赏
  • 举报
回复
我又帮你看了一遍。
把这几句注释掉
// AnsiToUTF convert = new AnsiToUTF();
// displayTxt = convert.convert(txt);、
// HtmConvert convert = new HtmConvert();
// displayTxt = convert.convert(txt);
可以运行,我是在没办法榜你判断。要不你就提供其他的代码。。
icestari 2007-08-27
  • 打赏
  • 举报
回复
TO :ETweiren()
这段代码可能简单了点,有些潦草,但是是没有什么错误的
icestari 2007-08-27
  • 打赏
  • 举报
回复
HtmConvert和AnsiToUTF是调用的处理方法而已。这个代码当他不存在就是了。
我的环境是WinXP SP2 Eclipse3.2 MyEclipse 5.0 JDK 1.6
我在点击了选择路径按钮之后报错部分:
java.lang.NullPointerException
at javax.swing.plaf.metal.MetalFileChooserUI$IndentIcon.getIconWidth(Unknown Source)
at javax.swing.SwingUtilities.layoutCompoundLabelImpl(Unknown Source)
at javax.swing.SwingUtilities.layoutCompoundLabel(Unknown Source)
at javax.swing.plaf.basic.BasicLabelUI.layoutCL(Unknown Source)
at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.setSelectionInterval(Unknown Source)
at javax.swing.JList.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup.setListSelection(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup.access$300(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.itemStateChanged(Unknown Source)
at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
at javax.swing.JComboBox.contentsChanged(Unknown Source)
at javax.swing.AbstractListModel.fireContentsChanged(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI$DirectoryComboBoxModel.setSelectedItem(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI$DirectoryComboBoxModel.addItem(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI$DirectoryComboBoxModel.access$800(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI.doDirectoryChanged(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI.access$1100(Unknown Source)
at javax.swing.plaf.metal.MetalFileChooserUI$5.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at javax.swing.JFileChooser.setCurrentDirectory(Unknown Source)
at javax.swing.JFileChooser.<init>(Unknown Source)
at javax.swing.JFileChooser.<init>(Unknown Source)
at dwt.convert.CreateUI$1.actionPerformed(CreateUI.java:57)
.....
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at dwt.convert.CreateUI$1.actionPerformed(CreateUI.java:65)
ETweiren 2007-08-27
  • 打赏
  • 举报
回复
你这代码问题N多呀!
边城狂人 2007-08-27
  • 打赏
  • 举报
回复
JFileChooser没有问题,你该不会是在Linux下跑的吧。
如果你那里要出问题,把打印出来的异常堆栈信息贴出来看看。
边城狂人 2007-08-27
  • 打赏
  • 举报
回复
你的HtmConvert和AnsiToUTF是哪里引进的类
tangge1010 2007-08-27
  • 打赏
  • 举报
回复
报啥错误啊?我这里怎么没报错?

62,614

社区成员

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

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