0

WebEngineのリファレンスを作ろうとしています

public class ClientArea implements Initializable {

public WebEngine engine;

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        engine = browser.getEngine();
        engine.load("about:blank");
    }
}

同じファイル内のクラス (ClientArea.java)

private static class SearchBox extends Region {

        private WebEngine engine; // private or public

        private TextField insertU;
        private Button refreshButton;
        private Button stopButton;
        private Button backButton;
        private Button forwardButton;
        public Button voltarButton;

        public SearchBox() {
        }
}

しかし、それはうまくいきません。

4

1 に答える 1

1

May be i don't understand your question. You want to access from a nested class (SearchBox) a field (engine) of the top level class (ClientArea).

It is easy if the nested class is not static. In this case, the inner class keeps a reference (ClientArea.this) to the outer class and could access to its fields and methods.

public class ClientArea implements Initializable {
    public WebEngine engine;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        engine = browser.getEngine();
        engine.load("about:blank");
    }

    private class SearchBox extends Region {
        public SearchBox() {
            System.err.println(engine);
        }

        private ClientArea getClientArea() {
            return ClientArea.this;
        }

        private WebEngine getWebEngine() {
            return engine;
        }
     }
}

Look at this answer on the difference between the static nested class ad the inner class.

The java tutorial on the nested classes.

于 2013-03-22T08:50:14.963 に答える