Jfilechooser - FileReader nie pobiera danych

0

Witam, mam problem z tym by program pobrał ścieżkę pliku z JFileChoosera...

 public class Frame_start {

	private JFrame frame;
	public JTextField textField;
	public JTextField textField2;


        ...
        ...  // deklaracja buttonów, labelów itd



wczytaj_plik_btn.addActionListener(new ActionListener()
	{
	      public void actionPerformed(ActionEvent ae) 
	      {
	    	
	        JFileChooser fileChooser = new JFileChooser("C:\\");
	        int returnValue = fileChooser.showOpenDialog(null);
	        if (returnValue == JFileChooser.APPROVE_OPTION) {
	          File selectedFile = fileChooser.getSelectedFile();
	          textField.setText(selectedFile.getAbsolutePath().toString());
	        }
	      }


 

a tutaj klasa, do której wczytuję plik

public class File_loader
	{
public File_loader() {}
		
		{
			

	       try
	       {
	    	  

	    	   BufferedReader reader=null;
	           System.out.println();
	    	   FileReader fReader = new FileReader(new Frame().textField.getText().toString());
                    ....

Kiedy próbuję wypisać na ekran new Frame().textField.getText().toString() uzyskuję pustą wartość. By program działał prawidło w FileReaderze muszę wpisać wartość "na sztywno" , a chcialbym dowiedzieć się jak właśnie można to wczytywanie z pliku usprawnić :) Problemem jest chyba to , że odwołuje się do obiektu JTextField, który nie przyjął żadnej wartości. Jak w takim razie "obsłużyć" JFileChoosera, by wybrana z niego ściężka została przekazana do obiektu fReader?

0

Zamiast

FileReader fReader = new FileReader(new Frame().textField.getText().toString());

napisz coś w rodzaju

FileReader fReader = new FileReader(ten_stary_frame_ktory_jest_wyswietlany.textField.getText().toString());
0

Hmm, czekaj, wrzuciłem kod jeszcze sprzed edycji postu, teraz aktualny:


public class Frame_start {

	public JFrame frame;
	public JTextField textField;
	public JTextField textField2;
	
	...
	... 
	}


	public class File_loader
    {
public File_loader() {}
 
        {
 
 
           try
           {
 
 
               BufferedReader reader=null;
               System.out.println();
               FileReader fReader = new FileReader(new Frame_start().textField.getText().toString());
                    ....

Myślę, że problemem jest to , że nie odwołuję się do wartości obiektu JTextfield z ActionListenera, a po prostu zadeklarowanego "pustego" JTextfielda na początku klasy Frame_start, ale niestety nie wiem właśnie jak się odwołać do pierwszej wartości o której piszę.

0

Przecież napisałem:

FileReader fReader = new FileReader(ten_stary_frame_ktory_jest_wyswietlany.textField.getText().toString());

Przekaż w konstruktorze klasy File_loader referencję do obiektu klasy, w której jest to pole tekstowe i zapamiętaj pod nazwą ten_stary_frame_ktory_jest_wyswietlany, możesz też wybrać inną (krótszą) nazwę.
P.S. Jeśli już użytkownik raz zawędrował do folderu z plikiem, który chce otworzyć, to nie każ wędrować mu ponownie. Zaczynanie akurat od folderu C:\ też jest kiepskim pomysłem.

wczytaj_plik_btn.addActionListener(new ActionListener()
     JFileChooser fileChooser = null; //pole w klasie
    {
          public void actionPerformed(ActionEvent ae) 
          {
 
            if(fileChooser == null)
            {
                 fileChooser = new JFileChooser("."); //zaczyna od folderu bieżącego
                 //lub
                 fileChooser = new JFileChooser(); //zaczyna od konta domowego uzytkownika
            }
            int returnValue = fileChooser.showOpenDialog(null);
            if (returnValue == JFileChooser.APPROVE_OPTION) {
              File selectedFile = fileChooser.getSelectedFile();
              textField.setText(selectedFile.getAbsolutePath().toString());
            }
          }

1 użytkowników online, w tym zalogowanych: 0, gości: 1