2016-08-09 5 views
1

私は、ユーザーが間違ったパスワードまたはログインを入力するたびに、ラベルwhitchに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を使用してください。

関連する問題