2015-09-07 2 views
1

У меня есть вопрос. В моем приложении у меня есть кнопка, когда я нажимаю на нее, текст сохраняется в переменной String, когда переменная не находится внутри кнопки действия, значение равно NULL. Как я могу сделать, чтобы сохранить значение из переменной и использовать ее позже. Благодарю.Сохраните переменную String в Java, чтобы использовать ее позже

private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 413, 445); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     JButton btnNewButton = new JButton("Word for Search"); 
     btnNewButton.setBounds(223, 62, 118, 23); 
     frame.getContentPane().add(btnNewButton); 

     textField = new JTextField(); 
     textField.setBounds(35, 63, 131, 20); 
     frame.getContentPane().add(textField); 
     textField.setColumns(10); 


     btnNewButton.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      search = textField.getText(); 
      System.out.println("String for car = " + search); 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://en.wikipedia.org/wiki/" + search); 
     String tstr1 = driver.findElement(By.xpath("//*[@id='content']")).getText(); 
     System.out.println("String for car = " + tstr1); 

     driver.close(); 
      } 
     }); 

    } 
} 

Все, что я хочу, когда я выйти из public void actionPerformed(ActionEvent e)String tstr1 держать сохраненные данные.

+0

Не могли бы вы привести пример работы, сокращенный до необходимых частей, чтобы воспроизвести вашу проблему и указать, где именно возникает проблема? – SomeJavaGuy

+1

Я только что обновил вопрос. –

+0

вы могли бы просто создать переменную экземпляра класса и сохранить в ней строку. – SomeJavaGuy

ответ

0

Определить его вне функции в качестве члена объекта

... 
    private String tstr1; 
    ... 
    private void initialize() { 
     ... 
     btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       ... 
       tstr1 = driver.findElement(By.xpath("//*[@id='content']")).getText(); 
       ... 
      } 
     }); 
    } 
+0

Спасибо, он работает !!! –

1

вы можете создать поле в классе, как

private String tstr1;

и внутри вашего метода вы можете присвоить значение

tstr1 = driver.findElement(By.xpath("//*[@id='content']")).getText();

, когда вам нужно получить доступ поле, вы можете позвонить

tstr1;

2

Не очень хорошая практика, но вы пробовали объявить свой вар глобальным?

Таким образом, ваш var может поддерживать ценность столько, сколько захотите.

private String globalString; 

private void functions() { 
    ... 
} 
1

Точно, все, что вам нужно сделать, это определить глобальную переменную. Если вы хотите получить доступ к переменной из вне класса можно просто добавить Getter:

public String getTStr1() { return tstr1; } 

Если у вас есть много строк, которые вы хотите сохранить просто использовать список в глобальном пути, например,

private List<String> tStrings = new ArrayList<String>(); 

и добавьте каждый tstr1 к списку

tStrings.add(tstr1); 

Тогда вам не нужно глобальное поле tstr1.

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