一个java Swing的问题:为什么JFileChooser出现几秒钟后就会自动关闭?怎样才能让它不关闭?请指教!
我编写的代码如下:
package myswing;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Filechooser
{
public static void main(String args[])
{
final JFrame jf=new JFrame("打开文件对话框");
JButton but=new JButton("打开文件对话框");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(null);
jf.setBounds(100,100,300,300);
jf.add(but);
but.setBounds(50,150,150,30);
jf.setVisible(true);
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser filechooser=new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
filechooser.showOpenDialog(filechooser);
String fileName = filechooser.getSelectedFile().getAbsolutePath(); // 得到选择文件或目录的绝对路径
System.out.println(fileName);
}
});
}
} 展开
你的有问题,addActionListener没有声明,需要包import java.awt.event.ActionEvent;
1.7.0中重写需要加 @Override
以下是刚在我电脑上的实现,包名为todo,类名为tohelp:
package todo;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class tohelp {
public static void main(String args[])
{
final JFrame jf=new JFrame("打开文件对话框");
JButton but=new JButton("打开文件对话框");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(null);
jf.setBounds(100,100,300,300);
jf.add(but);
but.setBounds(50,150,150,30);
jf.setVisible(true);
but.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser filechooser=new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
filechooser.showOpenDialog(filechooser);
String fileName = filechooser.getSelectedFile().getAbsolutePath(); // 得到选择文件或目录的绝对路径
System.out.println(fileName);
}
});
}
}
if(ret== JFileChooser.APPROVE_OPTION)
{
String fileName = filechooser.getSelectedFile().getAbsolutePath(); // 得到选择
}
还有就是创建文件选择框组件比较耗费系统资源,一般定义为一个成语变量来共用,而不是每次创建一个选择对话框对象。
你试一下在选择器显示几秒钟后都不操作,它就会关闭的
我试了,就是不关闭才问你的,我这里不出现你说的现象,我也选择文件什么的了,怎么操作都不会关闭。