2015-06-07 6 views
6

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

.tab { 
    -fx-border-radius: 10 10 0 0; 
    -fx-background-radius: 10 10 0 0; 
} 

.tab:selected .focus-indicator { 
    -fx-border-radius: 10 10 0 0, 10 10 0 0; 
} 

Однако я получаю довольно странное поведение. Когда новая вкладка создается, она имеет некоторые дополнительные углы, которые позже исчезают, когда я изменяю фокус или создаю новую вкладку. Например - создаю первую вкладку. enter image description here

Теперь я создаю вторую вкладку. Первая вкладка уже нормальная, но вторая имеет эти странные углы. enter image description here

Я проверил на centos и win7 - поведение такое же. Как это исправить?

EDIT 1
Это все мой файл css. Конечная цель состоит в том, чтобы сделать заголовки вкладок большими с закругленными углами.

.tab:selected .focus-indicator { 
    -fx-border-radius: 10 10 0 0, 10 10 0 0; 
    -fx-border-insets: -7 -7 -9 -8, -5 -5 -9 -6; 
} 

.tab-pane > .tab-header-area > .headers-region > .tab:selected{ 
    -fx-border-insets: 10 10 10 10, 10 10 10 10; 
} 

.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > 
.tab-label { 
    -fx-alignment: CENTER; 
    -fx-text-fill: -fx-text-base-color; 
    -fx-padding:0 10 0 0; 
} 

.tab-header-area .tab{ 
    -fx-padding:4 10 5 10; 
    -fx-border-radius: 10 10 0 0; 
    -fx-background-radius: 10 10 0 0; 
} 

EDIT 2
Я проверил это на двух разных ПК: 1 (Ubuntu), 2 (Centoc 71 и VM Win7). Я попытался скомпилировать с помощью oracle jdk - результат будет таким же.

+0

Its, потому что его ОТДЕЛЬНЫЕ -вы можете играть вокруг модель выбора, чтобы изменить ее стиль, я думаю – Elltz

+0

@Elltz Я начинаю javafx. Можете ли вы сказать, как играть :) –

+0

применить тот же стиль ко всем атрибутам, например. выбранный, мышь и т. д. для вкладки –

ответ

3

Это уже сообщалось ошибка https://javafx-jira.kenai.com/browse/RT-40462

ОБНОВЛЕНИЕ ошибка переместилась в OpenJDK системе распределения:

https://bugs.openjdk.java.net/browse/JDK-8090243

Некоторые из вашего кода является излишним. Так что это должно сработать.

.tab:selected .focus-indicator { 
    -fx-border-radius: 10 10 0 0, 10 10 0 0; 
    -fx-border-insets: -6 -9 -8 -8, -5 -8 -7 -7; 
} 
/* 
.tab-pane > .tab-header-area > .headers-region > .tab:selected{ 
    -fx-border-insets: 0 1 1 0, 1 2 0 1, 2 3 0 2; 
} 
*/ 
.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label { 
    -fx-padding:0 10 0 0; 
} 

.tab-header-area .tab{ 
    -fx-padding:4 10 5 10; 
    -fx-background-radius: 10 10 0 0; 
} 

Это будет выглядеть так:

enter image description here

UPDATE

Но если вы действительно хотите только, чтобы иметь больше радиуса к закругленным углам, это все, что вам нужно до:

.tab-pane > .tab-header-area > .headers-region > .tab { 
    /* if outer border should be 10 radius */ 
    -fx-background-radius: 10 10 0 0, 9 9 0 0, 8 8 0 0; 
} 

.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator { 
    -fx-border-radius: 9 9 0 0, 8 8 0 0; 
} 

ОБНОВЛЕНИЕ

Это то, что я получаю от вашего кода. При добавлении вновь созданной вкладки возникает странное поведение. Поэтому я сделал gif, чтобы показать, как работает мышь.

enter image description here

UPDATE

+0

Во-первых, я хочу поблагодарить вас за помощь. Однако вы вообще не поняли мой вопрос. Код, который я предоставил, составляет 100% за то, что мне нужно. Нет красных цветов, а не специальных границ фокуса. Откуда вы его взяли? Единственная проблема с «странными углами». –

+0

Я подумал, что он выпущен на ваш другой вопрос (http://stackoverflow.com/questions/30690166/javafx-increase-space-between-text-and-tab-header-area-edge/30690434#30690434). Если нет, все в порядке. – NwDev

+0

Мне очень жаль. Я знаю, как мы программист f ***, чтобы получить то, что нам нужно. И я очень благодарен вам за вашу попытку. Но так или иначе ... как решить эту проблему? –

2

Итак, давайте предположим, что это ошибка, и вы КСС хорошо, единственное решение я вижу сейчас, чтобы удалить и добавить стили по умолчанию после некоторой задержки.Что-то вроде этого:

Tab tab = new Tab("Tab " + (tabs.getTabs().size() + 1)); 
tabs.getTabs().add(tab); 
new Thread(()-> { 
    try { 
     Thread.sleep(50); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    Platform.runLater(()->{ 
      tabs.getStyleClass().remove("tab-pane"); 
      tabs.getStyleClass().add("tab-pane"); 
    }); 
}).start(); 

Насти хак, чтобы быть честным, но это работает для меня: enter image description here

+0

У вас эта же проблема на вашем компьютере? Я имею в виду, вы видели эти странные углы? –

+0

yep, и как @NwDx обнаружил, что это ошибка https://javafx-jira.kenai.com/browse/RT-40462 – varren

+0

Как я могу создать учетную запись для ее чтения? Кто такой администратор джиры? –

0

Это CornerRadii, это только увеличивает & уменьшает

+0

Не могли бы вы привести пример, как это сделать? –

+0

@varren Не могли бы вы прокомментировать это сообщение? –

+0

Кто такой варрен? @ JimJim2000 me? – Elltz