所以,我有一个动态创建的CheckBox
列表,我想根据我选择的TextArea
绘制它们。目前,它只对边框进行着色,而不是if (cb.isSelected()) {
ta.setStyle("-fx-background-color:#38ee00;");
}
if (cb2.isSelected()) {
ta.setStyle("-fx-background-color:orangered;");
}
if (!cb2.isSelected() && !cb.isSelected()) {
ta.setStyle("-fx-background-color:white;");
}
的内部。
这是我的代码:
private void OrderList(List<string> ListaFiles)
{
List<string> list = ((IEnumerable<string>)Directory.GetFiles(Directories, "*.sql", SearchOption.TopDirectoryOnly)).Select(f =>
{
string[] strArray = Path.GetFileName(f).Split('_');
int result;
if (strArray.Length < 1 || !int.TryParse(strArray[0], out result))
result = -1;
var data = new
{
File = f,
Version = result
};
return data;
}).Where(f => f.Version > -1).OrderBy(f => f.Version).Select(f => f.File).ToList<string>();
}
这是它带来的结果:
如果您需要任何其他信息,请随时告诉我。
答案 0 :(得分:1)
您实际上需要为.content
(see CSS Reference: TextArea - Substructure)的孩子TextArea
区域设置样式。
您可以使用lookup
获取该节点,但仅在应用外观之后才能获得该节点,这在布局之前不会发生。然后,你可以做这样的事情:
Region content = (Region) ta.lookup(".content");
content.setStyle("-fx-background-color:orangered;");
另一种方法是使用CSS样式表并更改TextArea
的类(仅提供有限数量的颜色):
.text-area.color-orangered .content {
-fx-background-color: orangered;
}
.text-area.color-white .content {
-fx-background-color: white;
}
.text-area.color-green .content {
...
// remove old class for coloring
ta.getStyleClass().removeIf(s -> s.startsWith("color-"));
// add new class
ta.getStyleClass().add("color-orangered");
答案 1 :(得分:1)
您正在寻找的CSS样式类是.text-area .content
。您有几个选项可以影响此样式类,一种可能是使用PseudoClass,这使您可以使用CSS选择器。
Main.java
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
root.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
// Add the CSS style class
TextArea ta = new TextArea();
ta.getStyleClass().add("my-text-area");
ChoiceBox<String> cb = new ChoiceBox<String>(FXCollections.observableArrayList("green", "orangered"));
cb.valueProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
// On selection, change the pseudo class of the TextArea
ta.pseudoClassStateChanged(PseudoClass.getPseudoClass(newValue), true);
}
});
root.setCenter(ta);
root.setBottom(cb);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
application.css
.my-text-area:orangered .content {
-fx-background-color: orangered ;
}
.my-text-area:green .content {
-fx-background-color: green ;
}