2014-01-05 3 views
1

Я устанавливаю Java-компонент из метода try. Текстовый файл читается, и прочитанный текст используется для установки java bean-компонента.Получение Java-компонентов, установленных в методе try

public class mainDisplay extends JPanel{ 



private imageDisplay id; 

public mainDisplay() 
{ 

    String path; 



     while (1==1) { 

      try { 

       FileInputStream roadMap = new FileInputStream("C:\\Users\\Public\\Desktop\\write.txt"); //path to the text file generated 
       DataInputStream route = new DataInputStream(roadMap); //importing the data from the text file 
       BufferedReader readMe = new BufferedReader(new InputStreamReader(route)); 
       pathOfspeed = readMe.readLine(); 
       // id = new imageDisplay(path); 

       Constants.getInstance().getBean().setPath(path); 
       try { 
        Thread.sleep(40); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
       } 




      } catch (Exception e) {     
       System.err.println("error:" + e.getMessage()); 
      } 

      System.out.println(Constants.getInstance().getBean().getPath()); 


     } 



} 

Это код читателя текстового файла и код, который устанавливает Bean.

Вот код из класса компонента:

public class Paths implements java.io.Serializable{ 

    public String url; 

    public Paths(){} 

    public void setPath(String name){this.url=name;} 

    public String getPath(){return url;} 

} 

Я тогда мой константы класса

public class Constants { 
private static Constants instance; 
private Paths bean; 

private Constants() { 
    bean=new Paths(); 
} 

public static synchronized Constants getInstance() { 
    if (instance == null) { 
     instance = new Constants(); 
    } 
    return instance; 
} 

public Paths getBean(){ 
    return bean; 
} 

public Paths setBean(Paths p){ 
    bean = p; 

    return p; 
} 

}

Моя проблема тогда возникает, когда я пытаюсь получить, что Bean от другой класс:

String imageUrl=Constants.getInstance().getBean().getPath(); 

    public test() { 

     System.out.println(imageUrl); 

    } 

Я получаю null каждый раз. Чтение файла должно быть постоянным, так как строка в текстовом файле меняется примерно каждую минуту, и мне нужно, чтобы он передавался другому классу, который его использует.

Может ли кто-нибудь дать мне несколько предложений относительно того, что делать дальше?

Thanks

ответ

2

Проблема в вашем классе Constants.

Каждый раз, когда вы делаете:

Constants.Bean 

возвращает вновь созданный класс Path, который, конечно, содержит пустую переменную URL-адрес, который возвращается в ваш метод GetPath.

Вы должны использовать Singleton для своего класса Constants.

Измените Константы класс:

public class Constants { 
    private static Constants instance; 
    private Paths bean; 

    private Constants() { 
    bean=new Paths(); 
    } 

    public static synchronized Constants getInstance() { 
    if (instance == null) { 
     instance = new Constants(); 
    } 
    return instance; 
    } 

    public Paths getBean(){ 
    return bean; 
    } 

    public Paths setBean(Paths p){ 
    bean = p; 
    } 

} 

Запись в переменных Контурах с помощью:

Constants.getInstance().getBean().setPath("your path"); 

читать переменные Контуры;

Constants.getInstance().getBean().getPath(); 
+0

Я получаю сообщение об ошибке: не может решить метод getPaths – user

+0

я поставил тривиальную ошибку в коде ... попробуйте теперь имя методы конечно getBean(). Разве вы не используете IDE с каким-то завершением кода? Если мой ответ решает вашу проблему, не забудьте принять его :) – elbuild

+0

Код теперь выполняется, но я все еще получаю нулевой вывод из тестового класса с новым кодом. – user

Смежные вопросы