2017-04-20 40 views
2

編輯/變更名稱,這裏是我的輸出我得到了秋梢/下拉菜單代碼如何在輸出中的JavaFX

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.control.TreeItem; 
import javafx.scene.control.TreeView; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.scene.text.Font; 
import javafx.scene.text.FontWeight; 
import javafx.scene.text.Text; 


public class Main extends Application 
{ 
    private BorderPane root; 
    TreeView<String> tree; 
    @Override 
    public void start(Stage primaryStage) throws Exception 
    { 
     root = new BorderPane();   
     root.setLeft(getLeftHBox()); 

     Scene scene = new Scene(root, 900, 500);   
     primaryStage.setTitle("JavaFx"); 
     primaryStage.setScene(scene); 
     primaryStage.show();  
    } 

    private HBox getLeftHBox() 
    { 
     HBox hbox = new HBox(); 
     Text text= new Text("Fall tree"); 
     text.setFont(Font.font("Helvetica", FontWeight.BOLD,16)); 
     VBox vbox =new VBox(10); 
     vbox.setPadding(new Insets(10)); 

     TreeItem<String> Library,module,unite,translateA ,translateB,rotate; 

     //Root 
     Library = new TreeItem<>(); 
     Library.setExpanded(true); 
     //module-Child of Root 
     module = makeBranch("module",Library); 
     makeBranch("Parameter X",module); 
     makeBranch("Parameter y",module); 
     //Unite-Child of module 
     unite = makeBranch("unite",module); 
     makeBranch("Parameter uX",unite); 
     makeBranch("Parameter uy",unite); 
     //TranslateA-Child of Unite 
     translateA = makeBranch("translateA",unite); 
     makeBranch("Parameter taX",translateA); 
     makeBranch("Parameter tay",translateA); 
     //TranslateB-Sibling of TranslateA 
     translateB = makeBranch("translateB",unite); 
     makeBranch("Parameter tbX",translateB); 
     makeBranch("Parameter tby",translateB); 
     //Rotate-Child of TranslateB 
     rotate = makeBranch("rotate",translateB); 
     makeBranch("Parameter RX",rotate); 
     makeBranch("Parameter RY",rotate); 

     tree= new TreeView<>(Library); 
     tree.setShowRoot(false); 

     vbox.getChildren().addAll(text,tree); 
     hbox.getChildren().addAll(vbox); 

     return hbox; 
    } 

    private TreeItem<String> makeBranch(String title, TreeItem<String> parent) { 
     TreeItem<String>item = new TreeItem<>(title); 
     item.setExpanded(true); 
     parent.getChildren().add(item); 
     return item; 

     } 


    public static void main(String[] args) 
    { 
     Application.launch(args); 
    } 
} 

。我的問題是如何編輯輸出中的名稱。我怎麼能給新的標題/名稱分支在輸出和出現在我的代碼。

例如:當您執行程序時,我在輸出之上有一個分支名稱「module」。我想更改該名稱並在輸出中輸入「Rotate_Module」。

(我可以簡單地改變代碼要做到這一點,但我想改變它的輸出,並且會自動出現在我的代碼)

筆記#我要改變每一個名字。謝謝

+0

你是什麼意思「改變它的輸出」? –

+0

@James_D,這意味着我想編輯輸出並重命名分支,(如果我雙擊分支,我可以更改它的名稱) – Mudasir

+0

你的意思是你希望用戶能夠編輯它們?那麼,「我想在輸出中更改它,以及*應該自動出現在我的代碼中」是什麼意思? –

回答

1

爲了使樹可編輯,這就是我認爲你在這個問題中的含義,你需要指定你希望樹使用包含文本字段的單元。你可以這樣做:

tree.setEditable(true); 
tree.setCellFactory(TextFieldTreeCell.forTreeView()); 

如果用戶編輯樹,並進行了更改,那麼這些更改將存儲在TreeItemvalueProperty();即,您可以使用module.getValue()等檢索值。

因此,要使用戶的更改持久化,您需要檢索所有這些值並將它們保存到文件(或數據庫或某種其他類型的持久性存儲)應用程序關閉。要使用這些值,當您啓動應用程序時,請從文件(或數據庫等)讀取值,並在創建樹項目時使用這些值。

+0

有關如何使這些值持久存在的詳細信息在本論壇上的答案太多。如果您遇到問題,您應該嘗試自己實施,併發布具體問題。 –

+0

非常感謝。你能否提供任何鏈接來學習如何檢索值並保存它們。這會有很大的幫助。謝謝 – Mudasir

+0

@Muddassir沒有什麼特別的,因爲有很多方法可以做到這一點(保存到數據庫,保存到文件,如果文件,你想保存什麼樣的格式等等等等)。所以你需要先決定一個策略,然後尋找關於特定機制的幫助(「如何讀寫Java中的屬性文件」,或者其他什麼......) –