2014-02-02 3 views
-1

У меня есть кнопка «Подключиться», которая вызывает внутреннюю логику для сетевого подключения У меня есть эта кнопка, которая запускает сетевое подключение.Сменить метку во время выполнения кнопки

Button connectButton = new Button("Connect"); 
connectButton.setOnAction(new EventHandler<ActionEvent>() 
     { 

      @Override 
      public void handle(ActionEvent e) 
      { 
       actiontarget.setText("Successful Connection Test!"); 
      } 
     }); 

Как я могу изменить ярлык кнопки во время выполнения действия с меткой «Отмена»? А также как я могу отменить действие, когда ярлык кнопки «Отмена»? Может быть, мне нужно вызвать конкретное действие, когда ярлык кнопки отличается?

ответ

0

Вы можете использовать логический флаг, чтобы указать, какое действие нужно выполнить при нажатии кнопки; если флаг имеет значение true, затем выполните действие отмены и установите флаг в false, установив текст вашей кнопки в «Подключить». Если флаг вместо false, выполните свое действие соединения и установите флаг в true, установив текст своей кнопки на «Отмена».

1

Вы можете расширить фрагмент кода с помощью приведенной ниже логики. Не пробовал, но я думаю, что это должно сработать, даже я бы предложил использовать Injection.

private final String CONNECT = "connect"; 
private final String DISCONNECT = "disconnect"; 

Button connectButton = new Button(CONNECT); 
connectButton.setOnAction(new EventHandler<ActionEvent>() { 

    @Override 
    public void handle(ActionEvent e) 
    { 
     if (connectButton.getText().equals(CONNECT)) { 
      do_something(); 
      actiontarget.setText(DISCONNECT); 
     } else { 
      do_something_else(); 
      actiontarget.setText(CONNECT); 
     } 
    } 
}); 

Еще одна идея будет использовать ToggleButton:

В вашем FXML:

<ToggleButton fx:id="btnConnect" alignment="CENTER" maxHeight="1" maxWidth="1" onAction="#actionClickedConnectBtn" text="connect"/> 

В вашем Код:

@FXML 
public void actionClickedConnectBtn(ActionEvent event) { 
    if (btnConnectGpsd.isSelected()) { 
     do_something(); 
    } else { 
     do_something_else(); 
    } 
} 
Смежные вопросы