2017-10-25 2 views
0

Ich arbeite an einem Chatbot-Projekt in Java und für die GUI Ich benutze JavaFX und IDE Eclipse Sauerstoff und Szene Builder 8.4.1.Javafx Hintergrundbild mit Szenenerstellung

Ich habe ein Problem beim Hinzufügen eines Hintergrundbilds zu einem Textbereich. Hier ist ein screen shot von dem, was ich getan habe und es zeigt nichts (nicht einmal ein Fehler).

finden Sie die fxml Code von Szene-Builder generiert: eine ScrollPane und eine Region:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.geometry.Insets?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.TextArea?> 
<?import javafx.scene.control.TextField?> 
<?import javafx.scene.image.Image?> 
<?import javafx.scene.image.ImageView?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.BorderPane?> 
<?import javafx.scene.layout.HBox?> 
<?import javafx.scene.layout.Region?> 

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1"> 
    <top> 
     <AnchorPane prefHeight="56.0" prefWidth="600.0" style="-fx-background-color: blue;" BorderPane.alignment="CENTER"> 
     <children> 
      <ImageView fitHeight="51.0" fitWidth="79.0" layoutX="23.0" layoutY="20.0" pickOnBounds="true" preserveRatio="true"> 
       <image> 
        <Image url="@../../../Downloads/background.jpg" /> 
       </image></ImageView> 
      <Label layoutX="118.0" layoutY="36.0" text="Ibot" /> 
     </children> 
     </AnchorPane> 
    </top> 
    <center> 
     <TextArea editable="false" prefHeight="200.0" prefWidth="200.0" style="-fx-background-image: url(&quot;../../../Downloads/background.jpg&quot;); -fx-background-repeat: stretch;" BorderPane.alignment="CENTER" /> 
    </center> 
    <bottom> 
     <HBox BorderPane.alignment="CENTER"> 
     <children> 
      <TextField prefHeight="25.0" prefWidth="476.0" promptText="Type in here" HBox.hgrow="ALWAYS"> 
       <HBox.margin> 
        <Insets /> 
       </HBox.margin> 
      </TextField> 
      <Region prefHeight="25.0" prefWidth="60.0" /> 
      <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="57.0" text="Send"> 
       <HBox.margin> 
        <Insets /> 
       </HBox.margin> 
      </Button> 
     </children> 
     <BorderPane.margin> 
      <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> 
     </BorderPane.margin> 
     <padding> 
      <Insets bottom="3.0" left="3.0" right="3.0" top="3.0" /> 
     </padding> 
     </HBox> 
    </bottom> 
</BorderPane> 

Antwort

0

Es ist wahrscheinlich nicht, weil, wie in JavaFX CSS Reference Guide die TextArea- ist eine Vereinigung von zwei Unterbau angeben arbeiten. Sie müssen den Stil dieser ändern.

In CSS sollte diese Arbeit:

#text-area-id .content{ 
    -fx-background-image : url("the_path_to_your_image") 
    /* others properties */ 
} 

Kommentar bearbeiten beantworten:

Für eine Schaltfläche müssen Sie nur die Eigenschaft -fx-background-image einzustellen:

#your-button{ 
     -fx-background-image : url("the_path_to_your_image") 
} 
+0

ich irgendwo gelesen, dass Ich kann Hintergrundbild zu einem Knopf auch hinzufügen .. Kann ich das genauso machen, wie Sie oben sagten? –

+0

Sie können es mit CSS tun, aber Sie müssen es nicht auf die gleiche Weise tun, es gibt keine native Unterstruktur, ich habe meine Antwort bearbeitet. –

+0

nur eine letzte Sache .. Ich mache einen Chatbot so Schnittstelle sollte wie Chat-App sein. Um die Bot-Antwort und die Benutzereingabe anzuzeigen, verwende ich einen Textbereich, also gibt es irgendeine Methode, um Text am Ende des vorhandenen Textes hinzuzufügen, oder muss ich den gesamten Text im Textbereich in einer Zeichenkette erhalten, concat new Text als wieder schreiben Sie den Textbereich wieder .. Irgendwelche Vorschläge? –