当前位置: 首页 > 知识库问答 >
问题:

JavaFx:制表符圆角

徐欣德
2023-03-14

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

.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我已经在两台不同的PC上检查过了:1(Ubuntu),2(Centoc 71和VM Win7)。我试着用oracle jdk编译-结果是一样的。

共有3个答案

董霖
2023-03-14

它是CornerRadii,它只是增加

蔚和安
2023-03-14

因此,让我们假设这是一个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();
严宇
2023-03-14

这是一个已报告的错误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;
}

如下所示:

更新

但是如果你真的只想有更多的圆角半径,这就是你所要做的:

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

更新

 类似资料:
  • 主要内容:弧形,圆形,示例,实例-2弧形 以下代码显示如何绘制以,为中心,半径为并从角度延伸到角度(270度长)的圆弧。 上面的代码生成以下结果。 圆形 类创建一个新的圆,其中指定的半径和中心位置以像素为单位。 上面的代码生成以下结果。 示例 以下代码显示了如何使用构造函数传递半径和中心。 上面的代码生成以下结果。 实例-2 圈形与DropShadow,如下代码所示 - 方法返回节点的边界区域,例如其宽度和高度。计算包括节点的实际尺

  • 主要内容:圆角矩形,椭圆示例JavaFX Shape类定义了常见的形状,例如线,矩形,圆,Arc,CubicCurve,Ellipse和QuadCurve。 在场景图上绘制矩形需要宽度,高度和左上角的(,)位置。 要在JavaFX中绘制一个矩形,可以使用类。 上面的代码生成以下结果。 圆角矩形 类实现了弧宽和弧高。可以使用这些功能来绘制圆角矩形。 上面的代码生成以下结果。 椭圆示例 上面的代码生成以下结果。

  • 我正在使用圆形按钮,我想在里面有一个图像。问题是图像在中心,而不是在左边,即使调用 loadButton.setAlignment(Pos.BASELINE_LEFT); 我得到的是上面的按钮,我需要的是下面的按钮。你知道在圆角下显示png的方法吗? 非常感谢!

  • 制表符面板概述 可以使用 “制表符 ”面板( “窗口 ”>“文字 ”>“制表符 ”)来设置段落或文字对象的制表位。 A BC DE FG “制表符 ”面板 A. 制表符对齐按钮 B. 制表符位置 C. 制表符前导符框 D. 对齐位置框 E. 面板菜单 F. 制表符标尺 G. 在框架上方放置面板可以在 “制表符 ”面板菜单中访问其他命令和选项。要使用此菜单,请单击面板右上角的三角形。 另请参阅 第

  • 我想在我的列表视图上有圆角。我目前使用的CSS使角变圆,直到我向ListView添加一个新字符串,然后角不再是圆的。我使用ObservableList来存储我的字符串,并将ListView设置为ObservableList。 我也检查了JavaFX CSS参考,但找不到任何对我的问题有用的东西。 无文本 添加文本后 我目前的 css

  • 我知道我可以只打印出图像,但我想找出玩家何时与不正确的颜色碰撞(就像颜色切换中的做法一样),以便他们在这种情况下失败,我假设如果我使用图片是不可能的。我该怎么做?