Die kurze und enttäuschende Antwort: Sie können dies nicht auf zuverlässige Weise tun.
Die etwas längere Antwort ist, dass das Etikett selbst nicht weiß, ob es überflogen ist oder nicht. Wenn die Größe eines Labels geändert wird, ist die Skinklasse (LabeledSkinBase
) für die Aktualisierung des angezeigten Texts zuständig. Diese Klasse verwendet jedoch eine JavaFX-utils-Klasse, um den ellipsoiden Text zu berechnen. Das Problem hierbei ist, dass die entsprechende Methode nur eine Ellipsoid-Zeichenfolge zurückgibt, wenn dies für die Bemaßungen der Beschriftung erforderlich ist. Die Haut selbst wird nie darüber informiert, ob der Text tatsächlich ellipsoid ist oder nicht, sie aktualisiert lediglich den angezeigten Text zum zurückgegebenen Ergebnis.
Sie können versuchen, den angezeigten Text der Hautklasse zu überprüfen, aber es ist geschützt. Also würden Sie tun müssen, ist LabelSkin
Unterklasse, und implementieren so ähnlich:
package com.sun.javafx.scene.control.skin;
import java.lang.reflect.Field;
import javafx.scene.control.Label;
@SuppressWarnings("restriction")
public class TestLabel extends LabelSkin {
private LabeledText labelledText;
public TestLabel(Label label) throws Exception {
super(label);
for (Field field : LabeledSkinBase.class.getDeclaredFields()) {
if (field.getName().equals("text")) {
field.setAccessible(true);
labelledText = (LabeledText) field.get(this);
break;
}
}
}
public boolean isEllipsoided() {
return labelledText != null && labelledText.getText() != null && !getSkinnable().getText().equals(labelledText.getText());
}
}
Wenn Sie Skin verwenden für Sie beschriften, sollten Sie in der Lage sein zu erkennen, ob Ihr Text ellipsoided wird. Wenn du dich über die Schleife und die Reflektion wunderst: Java erlaubte mir nicht, auf andere Weise auf das Textfeld zuzugreifen, also könnte das ein starker Hinweis darauf sein, dass du das wirklich nicht machen solltest ;-) Trotzdem: Es funktioniert!
Haftungsausschluss: Ich habe nur überprüft für JavaFX 8
Bump, ich will das wissen auch ... – Warkst
prüfen auch diese http://stackoverflow.com/a/35065526 –