Google с помощью неалфавитно-цифровых символов

Вы создаете экземпляр контроллера «вручную» с помощью

MainController mc = new MainController();

@FXML -но заданные поля инициализируются FXMLLoader, когда он создает контроллер для вас как часть процесса загружая файл FXML. Поскольку созданный вами контроллер не является экземпляром контроллера, созданным FXMLLoader, его @FXML -занятые поля неинициализируются (т. Е. Они являются нулевыми), и, следовательно, вы получаете исключение нулевого указателя.

Вы может получить ссылку на контроллер, созданный FXMLLoader, вызвав getController() в экземпляре FXMLLoader после вызова load().

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

public class ConnectionErrorController implements Initializable {

    private MainController mainController ;

    public void setMainController(MainController mainController) {
        this.mainController = mainController ;
    }

    // ...

    @Override
    public void initialize(URL location, ResourceBundle resources) {

        infoLabel.setText("Connection lost, please try again");
        tryButton.setText("try again");
        exitButton.setText("exit");

        tryButton.setOnAction(new EventHandler() {
            @Override
            public void handle(ActionEvent event) {

                WebEngine webEngine = mainController.getContentPaneController().getVideoWebView().getEngine(); // 1
                ToggleButton playButton = mainController.getControlPaneController().getPlayButton(); // 2
                if (mainController.testInet()) {
                    mainController.play(webEngine, playButton);
                } else {
                    // obviously you can now do something better than the "public static field hack" here:
                    MainController.exist = false;
                }
                tryButton.getScene().getWindow().hide();
            }
        });

        // ...
    }
}    

Предполагая, что вы загружаете второй файл fxml в методе в MainController, вы можете просто сделать что-то например:

public class MainController {

    // ...

    public void showConnectionErrorWindow(String fileName) {

        FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/ConnectionError.fxml"));
        Parent root = loader.load();
        ConnectionErrorController connectionErrorController = loader.getController();
        connectionErrorController.setMainController(this);

        Scene scene = new Scene(root);
        Stage stage = new Stage();
        // etc...
    }

    // ...
}

Обратите внимание, что есть гораздо более элегантные способы решения этой проблемы, такие как передача функции ConnectionErrorController обратного вызова (в форме лямбда-выражения) для обработки вызова play(...), которые избегают жесткой связи между ConnectionErrorController и MainController. Однако, поскольку вы, кажется, новичок в Java, этот более простой подход может быть более подходящим.

См. Параметры передачи JavaFX FXML для получения дополнительной информации о передаче значений контроллерам.

16
задан ale 30 April 2013 в 14:26
поделиться

8 ответов

На krugle, поиск "cs [я]" в кавычках, кажется, работаю..., как он делает также в Google codesearch...

4
ответ дан 30 November 2019 в 22:56
поделиться

К сожалению, кажется, что обходные решения в порядке. Я нашел, что поиск до-диеза или до-диеза, кажется, необходим. Я также использовал "Ansi C" или "c99" для поиска на C вместо C++.

я знаю, что поиск кода Google, кажется, переносит те же проблемы, хотя он действительно имеет regex механизм.

2
ответ дан 30 November 2019 в 22:56
поделиться

Я думаю, что необходимо взглянуть на google codesearch

1
ответ дан 30 November 2019 в 22:56
поделиться

Также необходимо попытаться использовать кавычки вокруг вещей с чувствительными символами как +.

Поиск $i++ нашел 0 результатов.
Поиск "$i++" нашел 707 000 результатов.

<час>

поиск кода @Greg

Using Google с cs[i] результаты в 2 450 000 результатов и находят строки с csi
Поиск кода Google Using с "cs[i]" результаты в 74 700 результатах и находят строки с cs[i]

2
ответ дан 30 November 2019 в 22:56
поделиться

Что относительно Koders?

Koders является свободной поисковой системой кодекса публичного права для открытого исходного кода. База данных, которая лежит в основе Koders, содержит 3,3 миллиарда строк кода и отражает содержание большинства world’s крупнейших репозиториев с открытым исходным кодом с подсветкой синтаксиса для более чем 30 языков программирования. Поисковая база данных далее улучшена с дополнительным кодом и метаданными от Черной Утки KnowledgeBase, industry’s большая часть полной базы данных и стороннего кода с открытым исходным кодом.

1
ответ дан 30 November 2019 в 22:56
поделиться

" Google проигнорирует любые специальные символы "!!! И все другие поисковые системы, по-видимому, так же плохи теперь. Даже ALtaVista совершенствовалась, который раньше находил их i9s мозгом demmaged также.

Это уверенный сохраняет их индексирующий время, но если я пытаюсь найти, что что-то как адреса электронной почты в некоторой компании говорит "@comcast.com", это игнорирует и приносит тысячи бесполезных страниц.

существует много других случаев, когда игнорирование специальных символов делает Google и другие поисковые системы совершенно бесполезными. Очень печальный!

Какая-либо поисковая система, которая не игнорирует их?!!

0
ответ дан 30 November 2019 в 22:56
поделиться

Редактирование: я протестировал с http://code.google.com , не http://www.google.com/codesearch - нечетный, что они не возвращают те же результаты.

поиск кода Google не работает ни один - поиск чего-то как, "cs [я]" возвращаю хиты для "csi".

я действительно сомневаюсь, что существует любой инструмент поиска общего назначения, который принимает синтаксис программирования во внимание - это просто слишком специализировано. Там может быть поисковыми продуктами/устройствами там, но на них, вероятно, укажут на частные кодовые базы, не предназначенные для общедоступного поиска.

-1
ответ дан 30 November 2019 в 22:56
поделиться

окно поиска firefox убирает некоторые специальные символы, особенно # из C #. Гугл прямой не

0
ответ дан 30 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: