Q:

Конструктор. Джава почему-то не видит переменную word

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Words {

   Words() {
       JFrame jfrm = new JFrame("Слова"); // Создаем контейнер верхнего уровня
       jfrm.setLayout(new FlowLayout()); // Устанавливаем диспетчек компоновки
       jfrm.setSize(400, 200); // Задаем размер окна
       jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       jfrm.setLocationRelativeTo(null); // Размещаем окно в центре экрана
       jfrm.setVisible(true); // Делаем его видимы

       JTextField jtf1 = new JTextField(15); 
       jtf1.setHorizontalAlignment(JTextField.CENTER); 
       jfrm.add(jtf1); // Добавляем в контейнер

       JTextField jtf2 = new JTextField(15); 
       jtf2.setHorizontalAlignment(JTextField.CENTER); 
       jfrm.add(jtf2);

       JButton button1 = new JButton("Выбрать");
       jfrm.add(button1);
       button1.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               String word = (jtf1.getText());//вот тут я создаю word
               System.out.println(word);
           }
       });

       JButton button2 = new JButton("Выбрать");
       jfrm.add(button2);
       button2.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               String word2 = (jtf2.getText());
               System.out.println(word2);
           }
       });

       JButton mainButton = new JButton("Ok");
       jfrm.add(mainButton);
       mainButton.setPreferredSize(new Dimension(1000,50));
       mainButton.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               System.out.println("a");
               word.charAt(); //word подсвечивается красным
           }
       });

   }

   public static void main(String[] args) {
       SwingUtilities.invokeLater(new Runnable() {
           public void run() {
               new Words();
           }
       });
   }
}

вряд ли метод charAt() тут виноват, скорее я чего-то в джаве не понимаю, как работает видимость и доступность переменных 
P.S. в пометках написано Java FX, но я её не использую тут, соре, слишком простая программа, но с ошибкой сталкиваюсь с такой частенько

A:

Ошибка в области видимости переменной. 
Ты должен сделать так: 
Сначало объявить переменную после:
public class Words { 
       Strind word; 
    ....
    ....

а потом уже  в button1.addActionListener  сделать word = (jtf1.getText());
Вот и всё :)

