2016-08-09 4 views
1

사용자가 잘못된 암호 나 로그인을 입력 할 때마다 ActionListener를 팝업에 추가하려고합니다. 여기에 내가 어떻게 그 문제를 해결할 수 있어요 내 로그인 컨트롤러JavaFx의 레이블에 actionListener를 추가하는 방법

public class LoginController implements Initializable { 

@FXML 
private Label label; 
@FXML 
private TextField LoginField; 
@FXML 
private PasswordField PasswdField; 
@FXML 
private Button LogInButton; 
@FXML 
private Label IncorrectDataLabel; 
//private String uri = "http://google.com"; 



@FXML 
private void LogIn(ActionEvent event) throws IOException { 
    if(LoginField.getText().equals("MKARK")&&PasswdField.getText().equals("KACZOR1")) 
    { 

     Parent parent = FXMLLoader.load(getClass().getResource("/fxmlFiles/MainScreen.fxml")); 
     Scene MainScene = new Scene(parent); 
     Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); 
     stage.setScene(MainScene); 
     stage.show(); 


    } 
    else 
    { 
     IncorrectDataLabel.setVisible(true); 
     // <------------------- Here I want to bind hyperlink to a label with would open the google site, whenever user clicks it. 
} 




@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
} 

입니까? 나는 여러 번 시도했으나 (setOnAction, addMouseListener) 아무 효과가 없었습니다. (

마음에 들지 않으면 public void initialize 함수에 대해 물어볼 것입니다. 무엇을 위해서입니까? 클래스를 만들 때 자동으로 튀어 나오게됩니다. . 사전에

감사

+1

레이블은 조치 이벤트를 발생시키지 않으므로 의미를 분명히 알 수 없습니다. 사용자가 실제로이 메소드를 실행하려고하는 것은 무엇입니까? ('initialize()'메쏘드는'@ FXML'-annotated 필드가 주입 된 후 시작되어 컨트롤러를 초기화하기위한 것입니다. –

+0

이 IncorrectDataLabel이 팝업 된 후에 사용자는 그것을 클릭 할 수 있습니다 하이퍼 링크가 작동하는 것처럼 원하는 웹 사이트로 리디렉션됩니다. – Michael

+1

레이블 대신 [하이퍼 링크] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Hyperlink.html)를 사용하지 않는 이유는 무엇입니까? –

답변

1
액션 이벤트를 발생하지 않는 마우스 이벤트, 예를 클릭 당신은 수신기를 사용할 수

레이블 :.

@FXML 
private void gotoGoogle() { 
    // open url etc 
} 

과 FXML 파일에

<Label fx:id="IncorrectDataLabel" onMouseClicked="#gotoGoogle" ... /> 

그러나이 경우 Hyperlink을 사용하는 것이 더 적절하며 사용자가 클릭 할 것으로 예상되는 시각적 피드백을 더 잘 사용자에게 제공합니다. 그냥

<Hyperlink fx:id="IncorrectDataLabel" onAction="#gotoGoogle" text="..." ... /> 

와 라벨을 교체하고 그에 따라 컨트롤러의 유형 업데이트 :

@FXML 
private Hyperlink IncorrectDataLabel ; 

당신은 모두 FXML 파일 및 컨트롤러 javafx.control.Hyperlink에 해당하는 수입을 필요로합니다.

주제 외 주석 : 변수 및 메소드 이름으로 proper Java naming conventions을 사용하십시오.

관련 문제