Eventos Scene Builder

1 resposta
androidelp

Boa tarde,

Estou fazendo um projeto usando javafx 2 e scene builder, inseri um controle Slider, e nas propriedades do scene builder "code" inseri no campo On Drag Detected #detectarmovimento.

e na classe controller chamei assim:

@FXML
    private Label label1;
    
     @FXML
    private Slider contador1;
     
     
      @FXML
     private void detectarmovimento(DragEvent event){
          
          try {
              
              label1.setText(Double.toString(contador1.getValue()));
              
              
          } catch (Exception ex) {
              
              JOptionPane.showMessageDialog(null, "Erro encotrado: "+ex);
          }
          
     
     
     }

porém está me retornando esse erro quando movimento o Slider:

java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
	at javafx.event.Event.fireEvent(Event.java:171)
	at javafx.scene.Scene$DnDGesture.fireEvent(Scene.java:2627)
	at javafx.scene.Scene$DnDGesture.process(Scene.java:2706)
	at javafx.scene.Scene$DnDGesture.access$8700(Scene.java:2603)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3340)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3164)
	at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
	at com.sun.glass.ui.View.notifyMouse(View.java:922)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
	at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
	at java.lang.Thread.run(Thread.java:722)

1 Resposta

androidelp

Pessoal sei que pelas regras não posso postar logo em seguida, porém vou finalizar meu post pois achei a solução.

Se caso alguém tiver o problema como o meu de usar o scene Builder para executar um efeito drag no slider.
Segue solução:

Esta foi uma opção que achei caso alguem tenha outras maneiras por favor postar.

Eu estava colocando #nomedavariavel no campo on drag Detect no scene Builder porém ele estava dando o erro que mostrei no tópico.

então usei o “public void initialize” que é inserido por padrão no controller para customização (obs. eu não sabia para que servia isto até então) no exemplo abaixo uso o listener onde ele pega o efeito do mouse de arrastar o botão do slider e inseri no label que está na aplicação:

@Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        // regulatempo é o meu slider
       regulatempo.valueProperty().addListener(new ChangeListener<Number>(){
       public void changed(ObservableValue<? extends Number> ov,
               Number old_val, Number new_val){
       //tempocronometro é o meu label
           tempocronometro.setText(String.format("%.2f", new_val));
       
       }
       
       }); 
        
        
    }
Criado 26 de outubro de 2012
Ultima resposta 26 de out. de 2012
Respostas 1
Participantes 1