Почему в следующем коде текст кнопки изначально не отображается при использовании ButtonSkin (из com.sun.javafx.scene.control.caspian)?
В следующем коде (работающем с WinXP, NetBeans 6.7.1, JavaFX 1.2, JDK 1.6), когда используется ButtonSkin, текст кнопки начинается как пустой. После использования ползунка отображается текст кнопки.
(source: googlepages.com )
до
(source: googlepages.com )
Если вы нажмете кнопку перед перемещением ползунка, действие будет запущено, и будет напечатано «Some action slider 15.0 SliderInt 15». Это говорит о том, что информация для текста кнопки присутствует. Все же текст кнопки не отображается.
Если обложка не установлена, то есть код skin: ButtonSkin { ... }
закомментирован, при запуске получается:
(source: googlepages.com )
Если вместо этого удалить привязку в text: sliderIntText
, проблема также исчезнет. Однако текст кнопки больше не обновляется синхронно с движением ползунка.
Удаление уровней косвенности, т. Е. Просто привязка к answerSlider.value в тексте кнопки не меняет проблему при запуске.
В сторону: существует известная проблема со значением ползунка, которая возникает, когда ползунок min не равен 0. Я не пытаюсь решить эту проблему здесь.
package skinbutton;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.control.Button;
import com.sun.javafx.scene.control.caspian.*;
import javafx.scene.paint.Color;
import javafx.scene.control.Slider;
var answerSlider =
Slider {
min: 6
max: 32
value: 15
width: 100
translateX: 75
translateY: 20
};
var sliderIntValue:Integer = bind (java.lang.Math.floor(answerSlider.value)) as Integer ;
var sliderIntText = bind "SliderInt {%d sliderIntValue}";
var sceneSlider = Scene{
content: [
answerSlider,
Text {
font : Font {
size: 14
}
x: 75
y: 50
content: bind "Slider at {%4.1f answerSlider.value}"
}
Button {
translateX: 75
translateY: 60
skin: ButtonSkin {
fill: Color.LIGHTCORAL
textFill: Color.BLACK
}
text: bind sliderIntText
width: 95
font: Font.font("SansSerif", FontWeight.BOLD, 14)
action: function() {
println("Some action slider {%4.1f answerSlider.value} {sliderIntText}");
}
}
]
};
Stage {
title: "Button Skin Issue"
width: 250
height: 130
scene: sceneSlider
}