2016-04-05 6 views
0

Am versuchen, eine App zu entwickeln, wie eine Terminalkonsole aussieht, ist mit einem TextArea- für die und mein Wunsch ist es, einen schwarzen Hintergrund und grünen Text Hat,Textarea JavaFX Farbe

den Punkt i dies tun will, ohne unter Verwendung eines beliebigen ccs Vorlage

ich weiß, dass meine Frage, wie ein hier dupliziert aussehen:

javafx textarea background color not css

oder

JavaFX CSS styling of TextArea does not work

auch nach den und zu versuchen, zu lesen, was sie vorgeschlagen, dass ich kein Glück meines Problem

Was habe ich versucht, so weit zu lösen gefunden:

im 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> 

aber kein glück ....

und im source-code:

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    System.out.println("init here"); 
    terminalTextArea.setStyle("-fx-text-fill: black;"); 
} 

das einzige, was ich bekommen eine umrandeten Farbe wie im Bild unten ....

hat einer von euch ist, bevor das gleiche Problem hatte ????

Tnxs im Voraus

enter image description here

+0

Warum möchten Sie dies ohne CSS tun? Dies ist der unterstützte Mechanismus zum Ändern des Stils eines Steuerelements. –

Antwort

1

Die empfohlene Methode ist eine externe CSS-Datei zu verwenden, wie in den Beispielen Sie verknüpft.

Wenn aus irgendeinem Grund Sie nicht wollen, das zu tun, versuchen

style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; " 

in Ihrer FXML-Datei oder in äquivalenter Weise

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 Ihrem des Controllers initialize() Methode.

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> 

und eine Testklasse:

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); 
    } 
} 

enter image description here

0

Es ist einfach nur ein id-Namen, den Sie in der elment setzen wollen wie:

AnchorPane id="AnchorPane" prefHeight="180.0" prefWidth="430.0" 

oder in Scene Builder in Eigenschaften nur unter dem Titel JavaFX CSS schreibe den Namen und style dieses Element in Ihrer CSS-Datei.