有bug,暂时贴出来由两个目的,
1.希望有大佬指出问题所在
2 做一个笔记
问题: 自定义布局,字体默认总是白色,不知道修改哪里。
下拉选项中,选中的字体也会变为白色。
将背景设置为除了白色其他颜色,选择的可以显示出来。
如果可以编辑,样式也可以修改出来。但是需求不能这样做。
头疼,还是做个选择对话框得了。
废话说了不少,先贴代码!
FXML
<VBox xmlns:fx="http://javafx.com/fxml/1" prefHeight="800" prefWidth="1500" stylesheets="@../css/combo.css" xmlns="http://javafx.com/javafx/8.0.172-ea" fx:controller="palms.controller.MonitorController">
<HBox>
<Label text="选择配置信息 " />
<ComboBox prefWidth="300" fx:id="comboConnect"/>
HBox>
VBox>
CSS
.combo-box-base {
-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, white;
-fx-background-insets: 0 0 -1 0, 0, 1, 2;
-fx-background-radius: 3px, 3px, 2px, 1px;
-fx-text-fill: black;
}
.combo-box {
-fx-background-color: transparent;
}
/*.combo-box .combo-box-popup .list-view, .combo-box .combo-box-popup .list-cell {*/
/*-fx-background-color: white ;*/
/*-fx-text-fill: black;*/
/*-fx-font-family: "Calibri" ;*/
/*}*/
.h-box{
-fx-text-fill: black ;
-fx-background-color: #fff ;
}
.combo-box .combo-box-popup .list-cell:hover {
-fx-text-fill: yellow ;
-fx-background-color: #006900 ;
}
.combo-box .combo-box-popup .list-cell {
-fx-text-fill: black ;
-fx-background-color: #fff ;
}
JAVA item 布局
package palms.view.monitor;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import palms.entity.ConfigTer;
/**
* className OptionBox
* Description TODO
* Author 刘高坡
* Date 2020/8/7 0007 下午 4:32
* Version 1
*/
public class OptionBox {
public HBox root(ConfigTer configTer){
HBox box = new HBox ( );
box.setStyle(" -fx-text-fill: black ; "
+ " -fx-background-color: #fff ;");
box.setStyle ( "" );
box.setSpacing ( 10 );
Label label = new Label ( );
label.setText ( "编号" +configTer.getId ());
box.getChildren ().add ( label );
Label labelName = new Label ( );
labelName.setText ( "用户:"+configTer.getUserName () );
box.getChildren ().add ( labelName );
Label labelHost = new Label ( );
labelHost.setText ( "Host:"+configTer.getUserName () );
box.getChildren ().add ( labelHost );
return box;
}
}
JAVA Controller
package palms.controller;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.HBox;
import palms.db.Derby;
import palms.entity.ConfigTer;
import palms.view.monitor.OptionBox;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
/**
* className MonitorController
* Description TODO 监控
* Author 刘高坡
* Date 2020/7/24 0024 上午 11:21
* Version 1.0
*/
public class MonitorController implements Initializable {
@FXML
private ComboBox comboConnect;
/** */
private ObservableList<HBox> observableList;
@Override
public void initialize(URL location, ResourceBundle resources) {
observableList = FXCollections.observableArrayList( );
comboConnect.setItems ( observableList );
List<ConfigTer> terList = Derby.getInstance ().findByAll ( new ConfigTer (), "" );
//" 编号: "+t .getId ()+" 用户名: "+t .getUserName ()+" HOST: "+t.getHost ()
terList.forEach ( t -> observableList.add ( new OptionBox().root ( t ) ) );
comboConnect.getSelectionModel().select(0); // 设置下拉框默认选中第1项
comboConnect.setEditable(false); // 设置下拉框能否编辑。默认不允许编辑
}
}