一个关于JFileChooser的问题
今天试着写了个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);
}
});
}
[解决办法]
我又帮你看了一遍。
把这几句注释掉
//AnsiToUTF convert = new AnsiToUTF();
//displayTxt = convert.convert(txt);、
//HtmConvert convert = new HtmConvert();
//displayTxt = convert.convert(txt);
可以运行,我是在没办法榜你判断。要不你就提供其他的代码。。
[解决办法]
你设置了皮肤的吗?是不是这里出的问题。
这个错应该是出在JDK内部,可能是其它地方引起的,最有可能的地方可能就是设置UI Style了。