特定の.htmlファイルをロードするフルスクリーンのWebビューを開くJavaで小さなスクリプトを作成しました。プログラムはLinuxで動作するはずですが、そうではないようです。Web ビューを開くために使用しているコードは次のとおりです。
public class MainBrowser extends Application {
private Scene scene;
@Override
public void start(Stage stage) {
// create the scene
stage.setTitle("Web View");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
scene = new Scene(new Browser(),width,height, Color.web("#666970"));
stage.setScene(scene);
//scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
stage.setFullScreen(true);
stage.show();
}
public static void main(){
launch();
}
}
package monitor;
import java.io.File;
import java.net.URL;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
class Browser extends Region {
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
public Browser() {
//apply the styles
getStyleClass().add("browser");
// load the web page
File openpage = new File(Config.PAGE_LOCAL_URL);
webEngine.load(openpage.toURI().toString());
//add the web view to the scene
getChildren().add(browser);
}
private Node createSpacer() {
Region spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS);
return spacer;
}
@Override protected void layoutChildren() {
double w = getWidth();
double h = getHeight();
layoutInArea(browser,0,0,w,h,0, HPos.CENTER, VPos.CENTER);
}
@Override protected double computePrefWidth(double height) {
return 750;
}
@Override protected double computePrefHeight(double width) {
return 500;
}
}
Windowsでは問題なく動作するようですが、Linuxでプログラムを実行するとフリーズし、例外も発生せず、フリーズしてシャットダウンします。Linux を扱うのは初めてです。私よりも専門家が問題を理解するのを手伝ってくれることを願っています。