Изменить цвет угла полосы прокрутки в WebView - PullRequest
0 голосов
/ 23 января 2019

Я работаю с JavaFX 8 в Windows 10. В WebView с темным фоном я вижу светло-серый угол, когда видны полосы прокрутки. WebView "управляет прокруткой автоматически." Я уже пробовал это , а также другие селекторы:

.corner {
  -fx-background-color: black;
}

А также

.corner {    
    -fx-background-color: black;
}
.scroll-bar > .corner {    
    -fx-background-color: black;
}
.scroll-pane > .corner {    
    -fx-background-color: black;
}
.scroll-bar .corner {    
    -fx-background-color: black;
}
.scroll-pane .corner {    
    -fx-background-color: black;
}
.web-view .scroll-bar .corner {    
    -fx-background-color: black;
}
.web-view .scroll-pane .corner {    
    -fx-background-color: black;
}

Но это не работает. Так что я мог сделать?

image

Пример кода: Основной класс

<code>public class Main extends Application {


    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.loadContent("<html><body><pre>This is a very very very very very very long string 
* * тест одна тысяча двадцать-две * ** 1024 тысяча двадцать-три * 1

2

* +1028 * 3 * * тысяча тридцать один "); webEngine.setUserStyleSheetLocation ("data:, body {background: black; color: white;}"); StackPane root = новый StackPane (); root.setPadding (new Insets (5)); . Root.getChildren () добавить (WebView); webView.setStyle ( "- FX-фон-цвет: черный;"); root.setStyle ( "- FX-фон-цвет: черный;"); . Root.getStylesheets () добавить ( "style.css"); primaryStage.setTitle («Тест JavaFX»); primaryStage.setScene (новая сцена (root, 300, 150)); primaryStage.show (); } }

style.css

.scroll-bar .track {
    -fx-background-color: black;    
}

.scroll-bar .thumb {
    -fx-background-color: brown;
}

.corner {
    -fx-background-color: black;
}

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

1 Ответ

0 голосов
/ 23 января 2019

Я не могу воспроизвести эффект на Mac OS X v10.13.6 с Java v1.8.0_201.Поскольку WebView «управляет прокруткой автоматически» и JavaFX использует WebKit , @Pagbo предлагает с использованием -webkit-scrollbar-corner, как предложено здесь .В другом контексте @DVarga предлагает использовать -fx-background-color, как показано здесь .Поскольку эффект может зависеть от платформы / версии, я добавил полный пример и снимок экрана для справки.В частности, нижний правый угол перекрывается кнопкой уменьшения вертикальной полосы прокрутки.При растяжении окна, чтобы скрыть вертикальную полосу прокрутки, открывается кнопка увеличения горизонтальной полосы прокрутки.Угол всегда занят кнопкой полосы прокрутки или черной.

image

Main.java

<code>import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.loadContent("<html><body><pre>"
            + "This is a very very very very very very long string<br>"
            + System.getProperty("os.name") + " v"
            + System.getProperty("os.version") + "; Java v"
            + System.getProperty("java.version")
            + "
test

1

2

3

"); webEngine.setUserStyleSheetLocation (" data:, body "+" {background: black; цвет: белый;} "+" :: - webkit-scrollbar-corner {background: # 0c0c0c;} "); StackPane root = new StackPane (); root.setPadding (new Insets (5)); root.getChildren (). add (webView); webView.setStyle ("- fx-background-color: black;"); root.setStyle ("- fx-background-color: black;"); root.getStylesheets (). add ("style.css"); primaryStage.setTitle ("Тест JavaFX"); primaryStage.setScene (новая сцена (root, 300, 150)); primaryStage.show ();}}

style.css

.scroll-bar .track {
    -fx-background-color: black;    
}

.scroll-bar .thumb {
    -fx-background-color: brown;
}

.corner {
    -fx-background-color: black;
}
...