gpt4 book ai didi

java - 在javafx Listview中隐藏垂直滚动条

转载 作者:搜寻专家 更新时间:2023-11-01 02:21:36 25 4
gpt4 key购买 nike

我已经尝试了几个小时,但似乎无法在任何地方找到答案。我有 2 个与同一个 ListView 相关的问题,其中一个比另一个更严重。

我正在尝试匹配在 Java 中提供给我的设计。 ListView 应如下所示

This is from the design

目前我已经得到了

My current endeavour

我创建了一个自定义 ListCell 来保存所有 View (尚未重构,所以可能看起来有点不整洁)

import HolderClasses.MenuItem;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;

public class CustomListCell extends ListCell<MenuItem>{

private Image mImage;
private String mText;
private AnchorPane background;
private ImageView imageHolder;
private VBox colourStrip;
private Label mTextLabel;

public CustomListCell(){

background = new AnchorPane();
imageHolder = new ImageView();
mTextLabel = new Label();
imageHolder.setFitHeight(40.0);
imageHolder.setFitWidth(40.0);
imageHolder.getStyleClass().add("listCellImage");
mTextLabel.getStyleClass().add("listCellText");
AnchorPane.setLeftAnchor(imageHolder, 10.0);
AnchorPane.setTopAnchor(imageHolder, 10.0);
AnchorPane.setBottomAnchor(imageHolder, 10.0);
AnchorPane.setLeftAnchor(mTextLabel, 80.0);
AnchorPane.setRightAnchor(mTextLabel, 1.0);
AnchorPane.setTopAnchor(mTextLabel, 0.0);
AnchorPane.setBottomAnchor(mTextLabel, 0.0);
colourStrip = new VBox();
colourStrip.setMinWidth(0.0);
colourStrip.setMaxWidth(2.0);
colourStrip.setPrefWidth(2.0);
colourStrip.getStyleClass().add("listCellColourStrip");
AnchorPane.setRightAnchor(colourStrip, 0.0);
AnchorPane.setTopAnchor(colourStrip, 0.0);
AnchorPane.setBottomAnchor(colourStrip, 0.0);

background.getChildren().addAll(mTextLabel, imageHolder, colourStrip);

}

@Override
protected void updateItem(MenuItem item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
//remove all the views
setText(null);
setGraphic(null);
} else {
//set all the views
imageHolder.setImage(item.getImage());
mTextLabel.setText(item.getText());
setText(null);
setGraphic(background);
}
}

}

我的 CSS 是

.list-cell {

-fx-background-color: #FCFCFC;
-fx-background-insets: 0 0 1 0;
}

.list-cell:empty {
-fx-background-color: #FCFCFC;
-fx-background-insets: 0 ;
}

.list-cell:selected .listCellColourStrip{

-fx-background-color: #CF000F;

}

.list-cell:selected {

-fx-background-color: #FFFFFF;

}

.list-view .scroll-bar:vertical .increment-arrow,
.list-view .scroll-bar:vertical .decrement-arrow,
.list-view .scroll-bar:vertical .increment-button,
.list-view .scroll-bar:vertical .decrement-button {
-fx-padding: 0px;
}

.list-view .scroll-bar:vertical {
-fx-padding: 0px;
}

.listCellImage {
-fx-opacity: 0.4;
}

.listCellText{
-fx-font-size: 1.5em;
-fx-text-fill: #888;
-fx-font-family: "Museo Sans 500";
}

简而言之,我已经设法删除了滚动条,但是滚动条占用的空间在它消失后似乎仍然被占用,而且我这辈子都无法让红色条显示在细胞。

最初的设计灵感来自 android ListView ,其中滚动条位于内容的顶部,滚动条在滚动时是半透明的,不滚动时是不可见的。理想情况下,我也想实现这一点,但如果红线可以放在最后,则没有滚动条是可以接受的妥协。

我尝试过使用 ScrollPane 和标准 AnchorPane 代替 ListView,但没有成功,因此决定再次尝试使用 ListView。但我对任何能达到预期效果的解决方案持开放态度,即使这意味着再次撕毁 ListView。

如果您能提供任何帮助,我们将不胜感激。

抱歉,如果我的问题格式不正确,我是新手 :)

谢谢

最佳答案

改变

.list-view .scroll-bar:vertical {
-fx-padding: 0px;
}

.list-view .scroll-bar:vertical {
-fx-scale-x: 0;
}

如果你想禁用项目之间的移动:

listview.setMouseTransparent( true );
listview.setFocusTraversable( false );

关于java - 在javafx Listview中隐藏垂直滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com