I'm trying to develop an app that looks like a terminal console, am using a TextArea for that and my wish is to habe a black background and green text,
The point I want to do this without using any ccs template
I know that my question can look like a duplicated in here:
javafx textarea background color not css
or
JavaFX CSS styling of TextArea does not work
but after reading those and trying what they suggested I found no luck to solve my issue
What I tried so far (Unsuccessfully):
in the FXML:
<TextArea
fx:id="terminalTextArea"
layoutX="14.0"
layoutY="85.0"
prefHeight="64.0"
prefWidth="402.0"
style="-fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; -fx-background-color:#000000;"
text="Terminal"
AnchorPane.leftAnchor="10.0"
AnchorPane.rightAnchor="10.0">
<font>
<Font name="System Bold" size="14.0" />
</font>
</TextArea>
and in the source-code:
@Override
public void initialize(URL url, ResourceBundle rb) {
System.out.println("init here");
terminalTextArea.setStyle("-fx-text-fill: black;");
}
The only thing that I get is a bordered color like in the image below:
You can change the font size and color of the text using the setFont() method. This method accepts an object of the Font class. The class named Font of the package javafx.
Use the setStyle() Method to Color Texts Label in Java In the line lbl. setStyle("-fx-text-fill: red; -fx-background-color: yellow"); , we applied some additional CSS properties to the label by using setStyle() method.
To make the text look bold, use the FontWeight constant of the font method as shown in Example 8. t. setFont(Font. font("Verdana", FontWeight.
The recommended way is to use an external CSS file, as in the examples you linked.
If for some reason you don't want to do that, try
style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; "
in your FXML file, or equivalently
terminalTextArea.setStyle("-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; ");
in your controller's initialize()
method.
SSCCE:
StyledTextArea.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.HBox?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.text.Font?>
<HBox xmlns:fx="http://javafx.com/fxml/1" >
<padding>
<Insets top="12" left="12" right="12" bottom="12"/>
</padding>
<TextArea
prefHeight="64.0"
prefWidth="402.0"
style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; "
text="Terminal">
<font>
<Font name="System Bold" size="14.0" />
</font>
</TextArea>
</HBox>
and a test class:
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class StyledTextArea extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
primaryStage.setScene(new Scene(
FXMLLoader.load(getClass().getResource("StyledTextArea.fxml"))
));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With