Tôi có mã sau, trong cùng một tệp java.Java Luồng thực thi - phương pháp ghi đè được thực thi đầu tiên so với hàm tạo
import javax.swing.SwingUtilities;
import java.io.File;
public class MainClass2{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run() {
javax.swing.JFileChooser jfc = new MyFileChooser();
File file = jfc.getSelectedFile();
}
});
}
}
class MyFileChooser extends javax.swing.JFileChooser{
public MyFileChooser(){
System.out.println("constructor call");
}
@Override
public java.io.File getSelectedFile(){
System.out.println("call to getSelectedFile");
return null;
}
}
Khi tôi chạy nó, kết quả mang lại cho tôi
call to getSelectedFile
constructor call
call to getSelectedFile
nên không phải là đầu ra được
constructor call
call to getSelectedFile
Tôi đang sử dụng java 5.
đâu cuộc gọi của bạn để getSelectedFile? –
Cái xấu của tôi, thực sự trong mã ban đầu của tôi, im gọi nó theo cách thông thường, sau khi khởi tạo MyFileChooser. Nhưng như bạn có thể thấy, ngay cả khi tôi không thực hiện lệnh gọi 'getSelectedFile'. Tôi sẽ cập nhật mã của mình. – Bnrdo
bạn không bao giờ cần phải gọi 'getSelectedFile', đây là gọi bên trong 'JFileChooser' khi bạn chọn tệp –