how to make the button event write the output in a textfield

88 Views Asked by At

how to make the button event write the output in a textfield since the button is in a hbox and the other in a textfield because i am using borderpane. at the end of the action event the button should write in the textfield the choosen file signature what is the solution of this problem?

public class Filrsystemencryption extends Application 
{

private HBox getHBox() 
{  
 HBox hbButtons = new HBox(15);
 Button btnimport = new Button("import");
TextField textfieldd = new TextField ();
  btnimport.setOnAction((event) ->
   {



  btnimport.setOnAction(new EventHandler<ActionEvent>() 
  {

        @Override
        public void handle(ActionEvent event) {

 JButton open = new JButton();
 JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new java.io.File("C:/Users/hannah/Desktop"));
fc.setDialogTitle("choose a file");
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (fc.showOpenDialog(open) == JFileChooser.APPROVE_OPTION){
  textfieldd.setText("file chosen");
}
        }

    });

 Button btnDelete = new Button("Remove");
 TextField textfield = new TextField ();

 final ComboBox ComboBox = new ComboBox();
    ComboBox.getItems().addAll(
        "Encrypt",
        "Decrypt"   
    );

Label label = new Label("password");
hbButtons.setSpacing(30);
hbButtons.setPadding(new Insets(10, 20, 30, 20)); 
hbButtons.getChildren().addAll(btnimport, btnDelete, 
label,textfield,ComboBox); 
  return hbButtons ;
}


  @Override
  public void start(Stage primaryStage) {


   BorderPane pane = new BorderPane();
   pane.setTop(getHBox());
   pane.setCenter(getHBoxx());


primaryStage.setTitle("File system encryption");
Scene scene = new Scene(pane, 600, 600);
primaryStage.setScene(scene);
primaryStage.show();
}   
  private TextField getHBoxx() {

 TextField textfieldd = new TextField ();
 textfieldd.setPrefWidth(400);
 textfieldd.setPrefHeight(200);
 return textfieldd;    
   }

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
  }

  }
1

There are 1 best solutions below

2
On

Using Swing classes in JavaFX when it's not really necessary just results in problems with the main threads for both platforms. Better use FileChooser for files and for directories (like in this case) DirectoryChooser:

btnimport.setOnAction(evt -> {
    DirectoryChooser dirChooser = new DirectoryChooser();
    dirChooser.setInitialDirectory(new java.io.File("C:/Users/hannah/Desktop"));
    dirChooser.setTitle("choose a file");

    File choice = dirChooser.showDialog(btnimport.getScene().getWindow());

    if (choice != null) {
        // dialog not aborted
        textfieldd.setText("file chosen");
    }
});