JavaFX Titelfarbe ändern

Tom299

Bekanntes Mitglied
Hallo,

seit gestern schon versuche ich verzweifelt die Titelfarbe meiner Anwendung bzw. eines Dialog-Fensters zu ändern. Ich hab mir caspian.css und modena.css schon angeschaut, aber ich finde nichts, was eine Auswirkung auf die Farbe des Titeltextes hätte.

Mein Dialog sieht so aus:
Java:
package de.test.dialog;

import java.io.IOException;

import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;


public class Dialog extends Stage {

	public static final String OK_DIALOG = "OK";
	
	private final String OK_XML = "/fxml/dialog_ok.fxml";
	
	
	public enum DIALOG_ACTION {
		BUTTON_1, BUTTON_2, BUTTON_3, NOTHING, CLOSE_WINDOW
	}
	
	private DialogController controller = null;
	private String message = null;
	
	
	public Dialog(String name, String ... buttonName) {		
		String resource = getFXMLResource(name);
		if (resource != null) {
			try {
				FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(resource));
				Parent root = (Parent) fxmlLoader.load();
				controller = fxmlLoader.getController();
				controller.setButtons(buttonName);
				setScene(new Scene(root));
			}
			catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		setOnCloseRequest(new EventHandler<WindowEvent>() {
			@Override
			public void handle(WindowEvent event) {
				System.out.println("Closing?");				
			}
		});
	}
	
	private String getFXMLResource(String name) {
		String fxmlResource = null;
		
		switch(name) {
			case OK_DIALOG:
				fxmlResource = OK_XML;
				break;
			default:
				break;
		}
		
		return fxmlResource;
	}
	
	public Dialog.DIALOG_ACTION getAction() {
		if (controller != null) {
			return controller.getAction();
		}
		else {
			return DIALOG_ACTION.NOTHING;
		}
	}
	
	public void setMessage(String sMessage) {
		this.message = sMessage;
		if (controller != null) {
			controller.setMessage(message);
		}
	}
	
	public void setIcon(Image image) {		
		if (controller != null) {
			controller.setIcon(image);
		}		
	}
}

Die FXML:
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="176.0" prefWidth="400.0" stylesheets="@styles/dialog.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.test.dialog.DialogController">
   <children>
      <ImageView fx:id="imgIcon" fitHeight="48.0" fitWidth="48.0" layoutX="8.0" layoutY="25.0" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="15.0" AnchorPane.topAnchor="25.0">
         <image>
            <Image url="@../icons/dialog/48a.png" />
         </image>
      </ImageView>
      <Text fx:id="txtMessage" layoutX="85.0" layoutY="45.0" strokeType="OUTSIDE" strokeWidth="0.0" text="TEST" wrappingWidth="300.00" AnchorPane.leftAnchor="94.0" AnchorPane.rightAnchor="15.0" AnchorPane.topAnchor="25.0">
         <font>
            <Font size="14.0" />
         </font>
      </Text>
      <Button fx:id="btn1" defaultButton="true" layoutX="295.0" layoutY="134.0" mnemonicParsing="false" onAction="#doAction" prefHeight="25.0" prefWidth="90.0" text="OK" AnchorPane.rightAnchor="15.0">
         <font>
            <Font size="14.0" />
         </font>
      </Button>
      <Button fx:id="btn2" cancelButton="true" layoutX="180.0" layoutY="134.0" mnemonicParsing="false" onAction="#doAction" prefHeight="25.0" prefWidth="90.0" text="Abbrechen" visible="false" AnchorPane.rightAnchor="120.0">
         <font>
            <Font size="14.0" />
         </font>
      </Button>
      <Button fx:id="btn3" layoutX="102.0" layoutY="134.0" mnemonicParsing="false" onAction="#doAction" prefHeight="25.0" prefWidth="90.0" text="Button 3" visible="false" AnchorPane.rightAnchor="225.0">
         <font>
            <Font size="14.0" />
         </font>
      </Button>
   </children>
</AnchorPane>

Dialog.css ist leer, hatte aber sowas versucht:
Code:
/*
.root { 	
	-fx-text-base-color: blue;
	-fx-text-background-color: green;
	-fx-text-inner-color: red;
	-fx-selection-bar-text: yellow;
}
*/

Es gibt genug Screenshots bei google Bildersuche, die JavaFX-Anwendungen bzw. Fenster/Dialoge/etc. mit schwarzer Schrift anzeigen, bei mir ist es einfach weiß und man kann es nicht lesen.

Mein Dialogaufruf:
Java:
		Dialog dialog = new Dialog(Dialog.OK_DIALOG, "Löschen", "Abbrechen");
		dialog.initModality(Modality.APPLICATION_MODAL);
		dialog.initOwner(((Node)e.getSource()).getScene().getWindow());
		dialog.setResizable(false);
		dialog.setTitle("Dateianhang löschen");		
		dialog.setMessage("Wollen Sie die ausgewählte(n) Datei(en) wirklich löschen?");
		
		// Get the Stage.
		//Stage stage = (Stage) dialog.getScene().getWindow();
		// Add a custom icon.
		//stage.getIcons().add(new Image("/icons/dialog/48a.png"));
		
		dialog.showAndWait();

Wie man sieht hab ich schon damit rumgespielt, wie man das Icon des Dialogs ändern kann, was auch funktioniert. Aber an den Titel mit der Farbe komm ich einfach nicht ran.

Mein Dialog sieht dann so aus:
Dialog.png


Hat jemand einen Tip für mich wie ich die Farbe ändern kann? Die weiße Schrift kann man doch nicht wirklich lesen!

LG Tom
 
Zuletzt bearbeitet von einem Moderator:

Tom299

Bekanntes Mitglied
Ja, so wie es aussieht wird die OS-Farbe gezogen.

Hab jetzt mal einen eigenen "nativen" Dialog gebaut, d.h. UNDECORATED und dann die Titelzeile selbst gebaut und noch MouseDragged implementiert. Sieht natürlich nicht ganz so elegant aus, aber fürs erste reicht mir das.

DialogNativ.png
 
Zuletzt bearbeitet:

dzim

Top Contributor
Komisch, dass dein OS dir da weiss vorgibt... Musst du mal was am Farbschema gedreht haben, denn ich hatte so was unter Windoof noch nie.
Eine eigene Fensterdekoration finde ich durchaus nett: Anwendung kann wie aus einem Guss wirken und sieht auf allen Platformen gleich aus. Aber: Das kann auch nach hinten los gehen, da ja nicht überall gleich ist, wo die Fensterbuttons liegen (Mac, Ubuntu links, viele Linux-DEs haben freie Wahl und Windoof immer rechts). Müsste man alles bedenken. Darüberhinaus lässt beim selbst zu implementierenden resizen des Fensters mitunter die Layout-Performance von JavaFX zu wünschen übrig - finde ich.
 

Tom299

Bekanntes Mitglied
Ja, ich hab auch keine Lust mir die ganze Arbeit zu machen und alle Titelfenster umzuprogrammieren. Für einen normalen Dialog, den man weder resizen noch per X schließen soll, find ich es halt ganz ok, zumal es in JavaFX keine Standard-Dialoge gibt. Also war die Arbeit hier nicht umsonst.
Mein Windows hab ich auf auf klassisch umgestellt (was ich eigentlich normal immer mache), war vorher irgendwie ein Win7 Farbschema mit weißer Schrift. Hab den PC aber neu bekommen in der Firma und evtl. wurde das so eingerichtet. Jetzt ist alles ok und die normalen User haben wohl auch die dunkle Titelschrift.
Trotzdem find ich es verwunderlich, daß ich mit JavaFX und CSS so gut wie alles ändern kann, nur nicht die Schriftfarbe der Titelzeile. Aber was solls, man lernt ja nie aus ;-)
 

dzim

Top Contributor
Nur zur Info: Mit Java8_u40 soll dann endlich eine offizielle Dialog-API Einzug halten. Ich hab vor kurzen gelesen, dass man sie sich wohl jetzt schon - sozusagen als Preview - von OpenJFX herunterladen kann. Da ich den Link des Artikels spontan nicht finde, kann ich dir aber auch nicht sagen, von wo genau... Sorry.
 

Tom299

Bekanntes Mitglied
Du meinst bestimmt https://bitbucket.org/controlsfx/openjfx-dialogs bzw. dann die ControlsFX. Hab ich mir sogar mal runtergeladen, aber noch nicht ausprobiert.

Bin noch ziemlich neu in der JavaFX-Welt (Swing hab ich jahrelang gemacht) und probiere gerne auch erst mal selbst bischen aus, damit ich was lerne :D

Aber wenn die Dialog-API kommt, werd ich sie mir auf jeden Fall mal anschauen.

JavaFX macht aber echt Spaß, auch wenn ich noch nicht alle Konzepte nutzen/kenne/verstehe. Allein mit dem Scene Builder GUIs zu erstellen spart enorm viel Zeit gegenüber Swing und GridBagLayout-Horror :lol:
 

dzim

Top Contributor
Oh ja. Auch wenn ich bemängeln muss, dass mir die Layouts von SWT von ihrer Art und Weise noch mehr gefahlen. Weniger seltsame statische Methode (siehe Hbo#hgrow und so) - und weniger herumgeärger mit preferred Size und so.
Aber vom Rest her (Animationen, Style, ...) gefällt mir JavaFX um Welten besser als alle anderen :-D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
missy72 JavaFX RowFactory Schriftfarbe ändern AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
W JavaFX CSS ändern wirft NPE AWT, Swing, JavaFX & SWT 8
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
S JavaFX GridPane Zellen Seitenverhätnis passend ändern mit der Stage AWT, Swing, JavaFX & SWT 0
S Parameter ändern in try/catch AWT, Swing, JavaFX & SWT 5
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
T JavaFx Examples ändern liefert unerwartetes Ergebnis AWT, Swing, JavaFX & SWT 5
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K Sprache ändern AWT, Swing, JavaFX & SWT 11
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
Sugan Inhalte mit Threads ändern -> java.lang.IllegalStateException AWT, Swing, JavaFX & SWT 6
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
P im JTable die Schriftfarbe ändern AWT, Swing, JavaFX & SWT 19
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
F JTable Zellen-Hintergrund ändern AWT, Swing, JavaFX & SWT 7
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
S JavaFX NullPointerException bei Versuch ImageView zu ändern AWT, Swing, JavaFX & SWT 1
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
B 3D-Grafik Java 3D Licht während Laufzeit ändern AWT, Swing, JavaFX & SWT 0
T JavaFX "DefaultButton"-Design ändern AWT, Swing, JavaFX & SWT 8
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
E JTable Hintergrund von geklickter Zelle ändern AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
Joew0815 Dropdown meue während der Laufzeit ändern. AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
OnDemand Inhalt des Frames ändern AWT, Swing, JavaFX & SWT 4
D Swing JCombobox - Tooltip Location ändern AWT, Swing, JavaFX & SWT 4
I Swing Beim Fenster das kleine Symbol(ICS) ändern AWT, Swing, JavaFX & SWT 3
O Hintergrund von AffineTransfom (rotation) ändern AWT, Swing, JavaFX & SWT 0
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7
G JavaFX Pane ändern/"austauschen" AWT, Swing, JavaFX & SWT 2
S Swing JColorChooser Font ändern AWT, Swing, JavaFX & SWT 2
H LookAndFeel Lokal nimbusOrange ändern AWT, Swing, JavaFX & SWT 2
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen


Oben