【问题标题】:JavaFx - increase space between text and tab header area edgeJavaFx - 增加文本和选项卡标题区域边缘之间的空间
【发布时间】:2015-08-21 19:10:54
【问题描述】:

我不明白我应该使用什么元素来完成这项任务。我试过了

.tab-header-area .tab{
    -fx-background-color:red;
    -fx-padding:30px;
}

编辑 1
这就是我得到的

但我在大红色矩形内有相同的选项卡标题。如何增加标签页眉区域的文本和边缘之间的距离?换句话说 - 如何在相同的字体大小下使标签页眉更大?

编辑 2
当我这样做时

.tab-header-area .tab .label{
    -fx-padding:5px 30px 5px 0;
}
.tab-header-area .tab {
    -fx-background-color: red ;
}

我得到:

但我需要(抱歉,这是 gimp,不是 Photoshop)

【问题讨论】:

  • 你能张贴一张它的样子,以及(如果可能的话)你希望它是什么样子吗?

标签: java javafx


【解决方案1】:

如果你想要标签周围的边框(不是标签),你必须使用这个:

.tab-pane > .tab-header-area > .headers-region > .tab {
    -fx-background-color: red;
    -fx-padding: 20px;
    -fx-border-color: black;
    -fx-border-width: 1px;
}

如果你想操作标签容器(标签所在的位置)本身,你需要这个:

.tab-pane > .tab-header-area > .headers-region > .tab  > .tab-container{    
    -fx-border-color: black;
    -fx-border-width: 1px;
}
.tab-pane > .tab-header-area > .headers-region > .tab {
    -fx-padding: 20px;
    -fx-background-color: red;
}

更新

选定选项卡的默认设置是:

.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator {
    -fx-border-width: 1, 1;
    -fx-border-color: -fx-focus-color, -fx-faint-focus-color;
    -fx-border-insets: -4 -4 -6 -5, -2 -2 -5 -3;
    -fx-border-radius: 2, 1; /* looks sharper if outer border has a tighter radius (2 instead of 3) */
}

事情就是这样:

.tab-pane > .tab-header-area > .headers-region > .tab {    
    -fx-padding: 20px;
    -fx-background-color: red;
}

.tab-pane > .tab-header-area > .headers-region > .tab:selected {    
    -fx-padding: 20px;
    -fx-background-color: red;
    -fx-border-width: 1px;
    -fx-border-color: black;
}

.tab-pane > .tab-header-area > .headers-region >.tab:selected .focus-indicator{
    -fx-border-width: 0px;  
}

查看 modena.css(默认 JavaFX 样式表)文件,了解要更改的内容。

字体大小不会动态变化,您必须通过选项卡的大小/宽度/高度属性上的侦听器来处理字体大小(与字体大小相关)。

还有很多伪标签,比如 .tab:selected .tab:top 等。所以如果你只想要新设计的默认行为,请注意这类事情。

最后看看css选择器,你错过了降序选择器('>'):http://www.w3schools.com/cssref/sel_element_gt.asp

【讨论】:

  • 矩形不是自定义矩形,它是焦点矩形。
  • 我看不懂你的代码。在这两个代码中都有一个黑色边框。不能有任何自定义边框。
  • 抱歉花了比我想象的更长的时间。
  • 谢谢!终于我们做到了!
【解决方案2】:

不清楚你在寻找什么......也许

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.stage.Stage;

public class TabPaneStyleTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        TabPane tabPane = new TabPane();
        Tab tab1 = new Tab();
        tab1.setGraphic(new Label("tab 1"));
        Tab tab2 = new Tab();
        tab2.setGraphic(new Label("tab 2"));
        tabPane.getTabs().addAll(tab1, tab2);
        Scene scene = new Scene(tabPane);
        scene.getStylesheets().add("tab-pane-big-tabs.css");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

使用 css 文件

.tab-header-area .tab .label{
    -fx-padding:5px 30px 5px 0;
}
.tab-header-area .tab {
    -fx-background-color: red ;
}

【讨论】:

  • 但是当标签集中时,如何使边框不在中心而是在标签页眉的边缘?我的意思是边框的行为方式相同,仅适用于大标签页眉?
  • 我的意思是主要部分必须不在中心,但它的宽度必须是标签页眉的〜宽度。左侧文字,右侧关闭按钮。
  • 感谢您的帮助。见编辑2。对不起,我没有从一开始就画出来。重点是如何增加border和text之间的距离,而不是border和tab header边缘的距离。
猜你喜欢
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
相关资源
最近更新 更多