JavaFX ButtonSkin аномалия - PullRequest
       7

JavaFX ButtonSkin аномалия

0 голосов
/ 10 августа 2009

Почему в следующем коде текст кнопки изначально не отображается при использовании ButtonSkin (из com.sun.javafx.scene.control.caspian)?

В следующем коде (работающем с WinXP, NetBeans 6.7.1, JavaFX 1.2, JDK 1.6), когда используется ButtonSkin, текст кнопки начинается как пустой. После использования ползунка отображается текст кнопки.

alt txt
(source: googlepages.com )
до alt text
(source: googlepages.com )

Если вы нажмете кнопку перед перемещением ползунка, действие будет запущено, и будет напечатано «Some action slider 15.0 SliderInt 15». Это говорит о том, что информация для текста кнопки присутствует. Все же текст кнопки не отображается.

Если обложка не установлена, то есть код skin: ButtonSkin { ... } закомментирован, при запуске получается:

alt txt
(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
}

1 Ответ

0 голосов
/ 11 августа 2009

Боюсь, у меня нет конкретного ответа на этот вопрос, но я знаю, что новые элементы управления в 1.2 довольно глючные - поэтому меня не удивляет, что вы видите такие проблемы.

Если вы этого еще не сделали, я рекомендую вам сообщить об ошибке в разделе «время выполнения» на сайте Javafx JIRA по адресу: http://javafx -jira.kenai.com /

...