如何使按钮事件在文本字段中写入输出

时间:2017-05-21 07:27:31

标签: java javafx event-handling addeventlistener hbox

如何使按钮事件在按钮所在的文本域中写入输出 在hbox中,另一个在文本域中,因为我使用的是borderpane。  在动作事件结束时,按钮应在文本字段中写入选择的文件签名 这个问题的解决方案是什么?

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 个答案:

答案 0 :(得分:1)

如果不真正需要在JavaFX中使用Swing类,则只会导致两个平台的主线程出现问题。最好将FileChooser用于文件和目录(例如本例)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");
    }
});