Kısa ve hayal kırıklığı yaratan cevap: Bunu yalnızca güvenilir bir şekilde yapamazsınız.
Biraz daha uzun cevap, etiketin kendisinin taşıp taşmadığını bile bilmemesidir. Bir etiket yeniden boyutlandırıldığında, görüntülenen metnin güncellenmesinden cilt sınıfı (LabeledSkinBase
) sorumludur. Bununla birlikte, bu sınıf, elipsoyalı metni hesaplamak için bir JavaFX utils sınıfı kullanır. Buradaki problem, ilgili yöntemin, etiketin boyutları tarafından isteniyorsa, elipsoid olan bir dizgiyi döndürmesidir. Cildin aslında metnin elipsozize olup olmadığı hakkında hiçbir zaman bilgi sahibi olmaz, sadece görüntülenen metni döndürülen sonuçlarla günceller.
Denediğin şey, cilt sınıfının görüntülenen metnini kontrol etmektir, ancak korunur. Eğer Etiket için bu cilt kullanırsanız
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());
}
}
, metin ellipsoided olup olmadığını saptamak mümkün olmalıdır: Yani yapmanız gerekir LabelSkin
alt sınıf ve böyle bir şey uygulamaktır. Döngü ve yansıma hakkında merak ederseniz: Java metin alanına başka yollarla erişmeme izin vermedi, bu yüzden bunu gerçekten yapmamanız için güçlü bir gösterge olabilir ;-) Yine de: Çalışıyor!
Yasal Uyarı: Sadece ...
Bump, ben de bunu bilmek istiyorum JavaFX 8 kontrol ettiğim – Warkst
Kontrol de bu http://stackoverflow.com/a/35065526 –