2013-02-04 34 views
11

Tôi đang cố gắng thực hiện điều gì đó khi một tab của tabPane của tôi được nhấp vào, tôi đã cố gắng sử dụng Sự kiện hành động nhưng không hoạt động:Tôi có thể thực hiện một số thao tác khi chọn một Tab cụ thể bằng cách sử dụng Javafx

public void tabPressClicked (ActionEvent event){ 
     comboBoxPresYear.setVisible(true); 
     lblPresYear.setVisible(true); 
    } 

[EDITED]

cách đúng để làm điều đó:

tabPresentation.setOnSelectionChanged(new EventHandler<Event>() { 
      @Override 
      public void handle(Event t) { 
       if (tabPresentation.isSelected()) { 
        comboBoxPresYear.setVisible(true); 
        lblPresYear.setVisible(true); 
       } 
      } 
     }); 

Trả lời

13

tôi không chắc chắn những gì bạn đang cố gắng làm/những gì ActionEvent bạn đang mong đợi nhưng thử một trong hai somet hing như:

tabPane.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) { 
     // do something... 
    } 
}); 

nếu bạn muốn làm điều gì đó khi thay đổi lựa chọn (bất kỳ tab)

hoặc thử:

http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#setOnSelectionChanged%28javafx.event.EventHandler%29

cho một tab cụ thể (tôi chưa thử điều này được nêu ra, mặc dù).

+0

Những gì tôi cần là khi tôi chọn một tab cụ thể (tabPress) thiết lập một ComboBox và một nhãn Visible, chỉ cần nó –

+0

chỉ cần thêm if (newValue = yourSpecificTabNUmber) {comboBoxPresYear.setVisible (true); lblPresYear.setVisible (true);} để thay đổi phương thức :) – invariant

+1

Bạn đã thử Tab.setOnSelectionChanged tôi đã đề cập chưa? – Puce

11

Bạn làm điều đó với số selectedItemProperty hoặc selectedIndexProperty như Puce đang nói. Dưới đây là giải pháp với selectedItemProperty mà tôi nghĩ là tốt hơn bởi vì bạn sẽ có được chọn Tab mục tự

tabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>() { 

    @Override 
    public void changed(ObservableValue<? extends Tab> observable, Tab oldTab, Tab newTab) { 
     if(newTab == tabPresentation) { 
      comboBoxPresYear.setVisible(true); 
      lblPresYear.setVisible(true);} 
     } 
    }); 

Tôi giả sử tabPresentation là đối tượng Tab riêng của mình.

+0

Điều này thực sự tốt đẹp, bởi vì tôi nhận được các mục tab trực tiếp và không cần phải tham khảo một số tab cụ thể, mà có thể thay đổi. – tareq

0

Này sẽ không thể là cách dễ nhất để làm điều đó

tab.selectedProperty().addListener((observable, oldValue, newValue) -> { 
     if (newValue) { 
      comboBoxPresYear.setVisible(true); 
      lblPresYear.setVisible(true);} 
     } 
    }); 
Các vấn đề liên quan