JavaFx:tab圆角

JavaFx:tab圆角,java,javafx,Java,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; } 然而,我的行为却相当奇怪。创建新选项卡时,它有一些额外的角,这些角在我更改焦点或创建新选项卡时会消失。 例如,我创建了第一个选项卡。 现在

要使制表符圆角,我使用以下代码:

.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;
}
然而,我的行为却相当奇怪。创建新选项卡时,它有一些额外的角,这些角在我更改焦点或创建新选项卡时会消失。 例如,我创建了第一个选项卡。

现在我创建第二个选项卡。第一个选项卡已经是正常的,但是第二个选项卡有这个奇怪的角落。

我已经在centos和win7上进行了检查-行为是相同的。如何修复它

编辑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;
}
编辑2

我在两台不同的电脑上检查过:1(Ubuntu)、2(Centoc71和VMWin7)。我尝试使用oracle jdk进行编译-结果是一样的。

这是一个已经报告的错误

更新错误已移动到openjdk错误跟踪系统:

你的一些代码是多余的。所以这应该行得通

.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;
}
这看起来是这样的:

更新

但是,如果您真的只希望圆角的半径更大,则只需执行以下操作:

.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来显示鼠标盖是如何工作的


更新

因此,让我们假设这是一个bug,您的css很好,我现在看到的唯一解决方案是在延迟一段时间后删除并添加默认样式。大概是这样的:

 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();


老实说,讨厌的黑客攻击,但它对我很有效:

是的,它只是增加和减少了它,因为它是被选中的-你可以在选择模型周围玩来改变它的风格guess@Elltz我是javafx初学者。你能说一下如何玩吗:)对所有属性应用相同的样式,例如选定的、鼠标悬停等。。对于选项卡
-fx边框插入:-4-4-6-5,-2-2-5-3是带有焦点指示器的选定选项卡上的默认值。所以你必须覆盖它。@NwDx我已经覆盖了它们,因为我需要使它们成为bug(来自我们之前的讨论)。但是没有用。首先我要感谢你的帮助。然而,你根本不理解我的问题。我提供的代码是我所需要的100%。没有红色,没有特别的焦点边框。你从哪里拿的?“奇怪的角落”是我唯一的问题。我认为这与你的另一个问题有关()。如果没有,没关系,我真的很抱歉。我知道我们怎样才能得到我们需要的。我非常感谢你的努力。但无论如何,这个问题怎么解决呢?请向我解释一下,你真正需要的是什么?只有正确的边界半径?甚至选择与否?首先,我在编辑1中提供的代码是我所需要的100%。然而,它也存在一些问题。当我在左上角和右上角附近创建新选项卡时,一些奇怪的东西会出现,然后消失。请看提供的图像。如何删除“这些奇怪的东西”。你的电脑上也有同样的问题吗?我的意思是,你们看到这些奇怪的角落了吗?是的,@NwDx发现这是一个bug,我如何创建帐户来读取它?谁是jira管理员?不知道)我也没有权限访问这个bug追踪器)嗯,希望在另一个线程中更改内容不会带来麻烦,因为JavaFX在自己的线程中像Swing一样运行,每个控件都应该在那里进行操作。你能提供一个例子吗?@varren你能评论这篇文章吗?谁是varren?@JimJim2000 me?不,user
varren
是user
varren
,请参阅上面的帖子。你能举例说明你的回答是什么意思吗?