我对Javafx的按钮和样式的(合理的)挫败感使我不得不诉诸于我可以实际样式化的东西:HTML / CSS。
我正在做的是在应用程序中加载两个网站。第一个是我的应用程序使用的网站,第二个将是控制应用程序的选项卡菜单。
Screenshot of the application.
这显然很有效,但是当我单击“ Click Me!”时链接,它将在第二个Web视图(底部的一个)中打开页面。能否做到这一点,以便当我单击第二个WebView中的链接时,它在第一个Webview中打开?
这是我的代码:
Main.java
*import java snip*
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws IOException{
primaryStage.setWidth(210);
primaryStage.setHeight(380);
VBox vbox = new VBox(0);
StackPane root = new StackPane();
ScrollPane scrollPane = new ScrollPane();
Scene scene = new Scene(root);
final WebView browser = new WebView();
final WebView nav = new WebView();
URI uri = URI.create("http://www.example.com");
Map<String, List<String>> headers = new LinkedHashMap<String, List<String>>();
headers.put("Set-Cookie", Arrays.asList("name=value"));
java.net.CookieHandler.getDefault().put(uri, headers);
final WebEngine webEngine = browser.getEngine();
final WebEngine navEngine = nav.getEngine();
webEngine.load("https://www.example.com/");
webEngine.setUserStyleSheetLocation(getClass().getResource("style.css").toString());
webEngine.setUserAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
navEngine.load(getClass().getResource("nav.html").toString());
navEngine.setUserStyleSheetLocation(getClass().getResource("style.css").toString());
HBox hbButtons = new HBox();
hbButtons .getChildren().add(nav);
hbButtons.prefHeightProperty().bind(primaryStage.heightProperty().multiply(1));
vbox.getChildren().addAll(browser, hbButtons);
root.getChildren().addAll(vbox);
scene.setRoot(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
nav.html:
<html>
<body>
<a href="http://www.example.com">Click me!</a>
</body>
</html>