javaFX: 学习笔记(ComboBox,item自定义布局)

有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); // 设置下拉框能否编辑。默认不允许编辑
    }
 
}

你可能感兴趣的:(javaFX)