0

在以下代码中,为什么在使用 ButtonSkin(来自 com.sun.javafx.scene.control.caspian)时最初没有显示按钮文本?

在以下代码中(运行 WinXP、NetBeans 6.7.1、JavaFX 1.2、JDK 1.6),使用 ButtonSkin 时,按钮文本以空白开头。使用滑块后,将显示按钮文本。

替代文本
(来源:googlepages.com
替代文字
(来源:googlepages.com

如果在移动滑块之前按下按钮,则会触发动作,打印“Some action slider 15.0 SliderInt 15”。这表明存在按钮文本的信息。然而按钮文本没有显示。

如果没有设置皮肤,也就是代码 skin: ButtonSkin { ... } 被注释掉了,启动时的结果是:

替代文本
(来源:googlepages.com

如果改为删除 中的绑定 text: sliderIntText ,问题也会消失。但是,按钮文本不再与滑块移动同步更新。

删除间接级别,即仅绑定到按钮文本中的 answerSlider.value 不会改变启动问题。

旁白:当滑块最小值不为 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
}
4

1 回答 1

0

恐怕我对这个问题没有具体的答案,但我知道 1.2 中的新控件存在相当多的错误 - 所以你看到这样的问题并不让我感到惊讶。

如果您还没有这样做,我鼓励您在 Javafx JIRA 站点的“运行时”部分下提出缺陷:http: //javafx-jira.kenai.com/

于 2009-08-11T09:52:47.050 回答