2012-12-29 20 views
6

Có cách nào để chuyển tham số cho phương thức onAction trong các tệp fxml không? Ngoài ra, tôi có thể bằng cách nào đó lấy fx: id của thành phần được gọi là phương thức onAction không?javafx pass fx: id tới bộ điều khiển hoặc tham số trong phương thức fxml onAction

Tôi có một số Nút cần thực hiện tương tự, nói 5 nút có id button1 - button5, khi được nhấn, nên in số tương ứng 1-5. Tôi không muốn có 5 phương thức onAction giống hệt với biến này.

Bất kỳ trợ giúp nào được đánh giá cao,

Trả lời

11

Chỉ gọi một trình xử lý, actionEvent.source là đối tượng khởi tạo sự kiện.

Hãy thử điều này:

myButton1.setOnAction(new MyButtonHandler()); 
myButton2.setOnAction(new MyButtonHandler()); 

private class MyButtonHandler implements EventHandler<ActionEvent>{ 
    @Override 
    public void handle(ActionEvent evt) { 
     if (evt.getSource().equals(myButton1)) { 
      //do something 
     } else if (evt.getSource().equals(myButton2)) { 
      //do something 
     } 
    } 
} 

Hoặc:

myButton1.addEventHandler(ActionEvent.ACTION, new MyButtonHandler()); 
myButton2.addEventHandler(MouseEvent.CLICKED, new MyButtonHandler()); 

private class MyButtonHandler implements EventHandler<Event>{ 
    @Override 
    public void handle(Event evt) { 
     if (evt.getSource().equals(myButton1)) { 
      //do something 
     } else if (evt.getSource().equals(myButton2)) { 
      //do something 
     } 
    } 
} 
+0

cảm ơn, lưu lại cho tôi rất nhiều tổ hợp phím Ctrl + C, Ctrl + V – glasspill

+0

Hi HMarioD, bạn có thể cung cấp cho mã exmaple xin vui lòng? Tôi không hiểu. –

+1

@DmitryNelepov Tôi đã chỉnh sửa câu trả lời với một số ví dụ, hy vọng điều này sẽ giúp bạn. – HMarioD