2013-06-18 16 views
5

Ben seçilmiş sekmeyi (yeni bir metin yazarak) Ben adlandırmak istiyorum bir sekmede çift sol fare tıklaması ile bir tabPaneJavaFX 2'de sekmenin metnini çift tıklatarak nasıl yeniden adlandırabilirsiniz?

@FXML 
private void addNewWorkspaceTab(ActionEvent event) { 

    Tab workspaceTab = new Tab(); 
    workspaceTab.setText("New Workspace"); 
    tabpaneWorkspace.getTabs().addAll(workspaceTab); 
    tabpaneWorkspace.setTabClosingPolicy(TabPane.TabClosingPolicy.SELECTED_TAB); 

} 

için sekmeyi (lar) eklemek için basit bir kod var: Nasıl verebilirim Bunu yap? Tam olarak sorun, clickCount veya adlandırma ile onmouseclicked ne

import javafx.beans.value.ChangeListener; 
import javafx.beans.value.ObservableValue; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.control.Label; 
import javafx.scene.control.Tab; 
import javafx.scene.control.TextField; 
import javafx.scene.input.MouseEvent; 

/** 
* 
* @author utente 
*/ 
public class TabSetText { 

public Tab createEditableTab(String text) { 
final Label label = new Label(text); 
final Tab tab = new Tab(); 
tab.setGraphic(label); 
final TextField textField = new TextField(); 
label.setOnMouseClicked(new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent event) { 
    if (event.getClickCount()==2) { 
     textField.setText(label.getText()); 
     tab.setGraphic(textField); 
     textField.selectAll(); 
     textField.requestFocus(); 
    } 
    } 
}); 


textField.setOnAction(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent event) { 
    label.setText(textField.getText()); 
    tab.setGraphic(label); 
    } 
}); 


textField.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observable, 
     Boolean oldValue, Boolean newValue) { 
    if (! newValue) { 
     label.setText(textField.getText()); 
     tab.setGraphic(label);    
    } 
    } 
}); 
return tab ; 
} 

} 
+0

: Burada – Kalaschni

+0

Metni değiştirmek istiyorum: şimdi sekme metin olarak "Yeni Çalışma Alanı" var, yeni bir String –

+0

yazmak için bu metni düzenlenebilir olarak ayarlamak istiyorum çünkü sekmenin onclickhandler olması en iyi yolun 'tab.setGraphic (...);' bir tuşa ve onu orada uygulayın (MouseEvent bir clickCount'a sahiptir) .. – Kalaschni

cevap

2

benim soru için çözümdür. Metin alanı satır içi (Inline-Editing) veya başka bir yere basit bir TextField olmalıdır?