0

次のコードで、ButtonSkin (com.sun.javafx.scene.control.caspian から) が使用されているときに、ボタンのテキストが最初に表示されないのはなぜですか?

次のコード (WinXP、NetBeans 6.7.1、JavaFX 1.2、JDK 1.6 を実行) では、ButtonSkin が使用されている場合、ボタンのテキストは空白で始まります。スライダーを使用すると、ボタンのテキストが表示されます。

代替テキスト
(出典: googlepages.com )
から代替テキスト
(出典: googlepages.com )

スライダーを動かす前にボタンを押すと、アクションがトリガーされ、「いくつかのアクション スライダー 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 に答える