Качайте JTextField после нажатия кнопки JButton - PullRequest
0 голосов
/ 26 ноября 2018

Очевидно, мои навыки Google-fu немного тусклые, и я не могу понять, как получить JTextField при нажатии JButton.

Обратите внимание, что я удалил некоторые части кода для удобства чтения.

Если вы видите некоторую переменную, которая не определена, предположите, что она была частью этого кода.

Как есть, код работает нормально.

public final class Main {
    // Some removed code was here
    private void prepareGUI() {

        // Top right stuff
        JPanel topRightPanel = new JPanel();
        topRightPanel.setLayout(new FlowLayout());
        JLabel topRightLabel = new JLabel("Address");
        JTextField topRightTextField = new JTextField("", 15);
        topRightTextField.setName("add_address");
        JButton topRightButton = new JButton("Add");
        topRightButton.setName("add_btn");

        topRightPanel.add(topRightLabel);
        topRightPanel.add(topRightTextField);
        topRightPanel.add(topRightButton);
        mainFrame.add(topRightPanel);

        // The button in question. Very suggestive name, I know.
        topRightButton.addActionListener(new GenericButtonListener());

        genericButtonListener.setKernel(kernel);

        // some other non relevant stuff here

        mainFrame.setVisible(true);
    }

}

public class GenericButtonListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton btn = (JButton) e.getSource();
        String btnName = btn.getName();

        if(btnName.toLowerCase().contains("add_btn")) {
            addBtn(btn);
        }
    }

    public void addBtn(JButton button){
        SshFileIO sshFileIO = kernel.getFileIO();
        // Get field text here
    }
}

Моя текущая дилемма состоит в том, как получить указанное значение текстового поля внутри GenericButtonListener.

Я понимаю, что могу использовать getText, чтобы получить значение текстового поля, однако я не понимаюУ меня нет доступа к этой переменной внутри функции actionPerformed.

Полагаю, это скорее проблема с областями видимости, чем с чем-либо еще.

Мне просто нужно немного указать в правильном направлении,руки не требуются.

Больно очевидно, что я новичок в Java.

1 Ответ

0 голосов
/ 26 ноября 2018

Пожалуйста, попробуйте получить ссылку на topRightTextField с конструктором GenericButtonListener.Сохраните как свойство класса и используйте его внутри actionPerformed.

Измените это:

 topRightButton.addActionListener(new GenericButtonListener());

На это:

 topRightButton.addActionListener(new GenericButtonListener(topRightTextField));

А внутри класса GenericButtonListener add field:

private JTextField topRightTextField;// set it in the constructor

А затем используйте его внутри вашего метода actionPerformed.

Удачного кодирования и удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...