请选择 进入手机版 | 继续访问电脑版

JavaFX入门_fxml的事件初体验

[复制链接]
发表于 2019-10-11 14:12:18 |显示全部楼层
  在之前的文章中,我们学习了如何使用fxml进行UI的界面布局。

  那么,紧接着我们就要学习一下如何进行fxml中的事件处理。
  
   我们需要做的就是下面的样子。有几个简单的处理函数。
TIM截图20191016102700.png

   fxml
      在下面的代码中,我们要着重注意
      MenuItem mnemonicParsing="false" text="Close"
      这一句。我们看到onAction事件,就是说我们绑定的处理方法就是onMenuClose.
   

   在
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <?import java.lang.*?>
  3. <?import javafx.scene.control.*?>
  4. <?import javafx.scene.layout.*?>


  5. <AnchorPane  fx:controller="d2.Test"  maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.131" xmlns:fx="http://javafx.com/fxml/1">
  6.    <children>
  7.       <MenuBar layoutX="7.0" layoutY="8.0">
  8.         <menus>
  9.           <Menu mnemonicParsing="false" text="File">
  10.             <items>
  11.               <MenuItem mnemonicParsing="false" text="Close" onAction="#onMenuClose" />
  12.             </items>
  13.           </Menu>
  14.           <Menu mnemonicParsing="false" text="Edit">
  15.             <items>
  16.               <MenuItem mnemonicParsing="false" text="Delete" />
  17.             </items>
  18.           </Menu>
  19.           <Menu mnemonicParsing="false" text="Help">
  20.             <items>
  21.               <MenuItem mnemonicParsing="false" text="About" />
  22.             </items>
  23.           </Menu>
  24.         </menus>
  25.       </MenuBar>
  26.       <TextArea layoutX="7.0" layoutY="33.0" prefHeight="362.0" prefWidth="592.0" />
  27.    </children>
  28. </AnchorPane>
复制代码

   
   java
  
  1. package d2;

  2. import javafx.application.Application;
  3. import javafx.fxml.FXMLLoader;
  4. import javafx.scene.Parent;
  5. import javafx.scene.Scene;
  6. import javafx.stage.Stage;

  7. /**
  8. *
  9. *
  10. * @author Tim
  11. *        https://blog.csdn.net/theonegis/article/details/50181339
  12. */
  13. public  class D2 extends Application {
  14.         
  15.                 public static void main(String[] args) {
  16.                           launch(args);
  17.                 }
  18.                
  19.                 @Override
  20.                 public void start(Stage primaryStage) throws Exception
  21.                 {
  22.                         Parent root = FXMLLoader.load(getClass().getResource("D2.fxml"));
  23.                     primaryStage.setTitle("我的第一个使用XML配置完成的JavaFx项目");
  24.                     primaryStage.setScene(new Scene(root));
  25.                     primaryStage.show();

  26.                 }
  27. }
复制代码


   处理java.

   
  1. package d2;

  2. import java.io.File;

  3. import javax.swing.JOptionPane;

  4. import javafx.event.ActionEvent;
  5. import javafx.fxml.FXML;
  6. import javafx.scene.Scene;
  7. import javafx.scene.control.TextArea;
  8. import javafx.scene.layout.AnchorPane;
  9. import javafx.stage.FileChooser;
  10. /**
  11.   *
  12.   *
  13.   * 由上面的解释,可以很容易的知道JavaFX中是用到的树形结构。
  14.   *
  15.   * @author Tim
  16.   *
  17.   */
  18. public class Test {
  19.     @FXML
  20.     private AnchorPane layoutPane;
  21.     @FXML
  22.     private TextArea  fileContent;
  23.     private File result;
  24.    
  25.     @FXML
  26.     private void onMenuOpen(ActionEvent event) {
  27.                 FileChooser fileChooser = new FileChooser();
  28.                 result = fileChooser.showOpenDialog(layoutPane.getScene().getWindow());
  29.                 if (result != null) {
  30.                         //fileContent.setText(FileTools.readFile(result));
  31.                 }
  32.     }
  33.    
  34.     @FXML
  35.     private void onMenuSave(ActionEvent event) {
  36.         if(result != null){
  37.                 //FileTools.writeFile(result, fileContent.getText());
  38.         }
  39.     }
  40.    
  41.     @FXML
  42.     private void onMenuClose(ActionEvent event) {
  43.         System.exit(0);
  44.     }
  45.    
  46.     @FXML
  47.     private void onMenuDelete(ActionEvent event) {
  48.         fileContent.replaceSelection("");
  49.     }
  50.    
  51.     @FXML
  52.     private void onMenuAbout(ActionEvent event) {
  53.         JOptionPane.showMessageDialog(null, "JavaFX记事本是一款使用JavaFX开发的记事本。" ,"关于",  JOptionPane.PLAIN_MESSAGE);
  54.     }
  55.    
  56.     @FXML
  57.     private void onContextSelectAll(ActionEvent event) {
  58.         fileContent.selectAll();
  59.     }
  60. }
复制代码









http://xuejava.org/thread-514-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|沙漏笔记

GMT+8, 2019-11-18 01:32 , Processed in 0.133919 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Copyright © 2015-2018 xuejava网 / 鲁ICP备17054568号-1
回顶部