对java基础问题的疑问,关于this的import java.awt.BorderLayoutimport java.awt.event.ActionEventimpor
对java基础问题的疑问,关于this的
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ExampleFrame_09 extends JFrame {
private JTextField textField;
public static void main(String args[]) {
ExampleFrame_09 frame = new ExampleFrame_09();
frame.setVisible(true);
}
public ExampleFrame_09() {
super();
setTitle("文件选择对话框");
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.NORTH);
final JLabel label = new JLabel();
label.setText("文件:");
panel.add(label);
textField = new JTextField();
textField.setColumns(20);
panel.add(textField);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int i = fileChooser.showOpenDialog(ExampleFrame_09.this);
if (i == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
textField.setText(selectedFile.getName());
}
}
});
button.setText("上传");
panel.add(button);
//
}
}
int i = fileChooser.showOpenDialog(ExampleFrame_09.this);43行,这句,如果改成
int i = fileChooser.showOpenDialog(this);为何就不对了?this不就是ExampleFrame_09的引用吗?和上面不是一个效果? java基础 this
[解决办法]
你这个是匿名内部类fileChooser.showOpenDialog(this); 指的是new ActionListener()。
fileChooser.showOpenDialog(ExampleFrame_09.this);才指的是ExampleFrame_09。
