当前位置:   article > 正文

Javafx之网格布局,下拉框,单(多)选框_javafx多选框

javafx多选框

一、连接数据库 帮助类

  1. package com.zking.util;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. /**
  7. * 连接数据库 帮助类
  8. * @author Administrator
  9. *
  10. */
  11. public class DBHelper {
  12. //注册驱动
  13. static {
  14. try {
  15. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  16. } catch (Exception e) {
  17. e.printStackTrace();//处理异常信息
  18. }
  19. }
  20. //连接语句
  21. private static final String url = "jdbc:sqlserver://sqlserver:1433;DatabaseName=T283";
  22. //获得连接
  23. public static Connection getCon() {
  24. Connection con = null;
  25. try {
  26. con = DriverManager.getConnection(url,"sa","123");
  27. } catch (Exception e) {
  28. e.printStackTrace();//处理异常信息
  29. }
  30. return con;
  31. }
  32. public static void close(Connection con,PreparedStatement ps,ResultSet rs) {
  33. try {
  34. if(con!=null) {
  35. con.close();
  36. }
  37. if(ps!=null) {
  38. ps.close();
  39. }
  40. if(rs!=null) {
  41. rs.close();
  42. }
  43. } catch (Exception e) {
  44. e.printStackTrace();//处理异常信息
  45. }
  46. }
  47. }

二、实体类 

  1. package com.zking.entity;
  2. /**
  3. * 学生 实体类
  4. * 定义属性
  5. * @author Administrator
  6. *
  7. */
  8. public class Student {
  9. //定义属性,私有化属性
  10. private int id;
  11. private String name;
  12. private String password;
  13. private String sex;
  14. //封装
  15. public int getId() {
  16. return id;
  17. }
  18. public void setId(int id) {
  19. this.id = id;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27. public String getPassword() {
  28. return password;
  29. }
  30. public void setPassword(String password) {
  31. this.password = password;
  32. }
  33. public String getSex() {
  34. return sex;
  35. }
  36. public void setSex(String sex) {
  37. this.sex = sex;
  38. }
  39. //构造函数
  40. public Student() {
  41. super();
  42. }
  43. public Student(int id, String name, String password, String sex) {
  44. super();
  45. this.id = id;
  46. this.name = name;
  47. this.password = password;
  48. this.sex = sex;
  49. }
  50. public Student(String name, String password, int age, String sex) {
  51. super();
  52. this.name = name;
  53. this.password = password;
  54. this.sex = sex;
  55. }
  56. //toString
  57. public String toString() {
  58. return "编号 " + id + "\t 姓名 " + name + "\t 密码 " + password + "\t 性别 " + sex;
  59. }
  60. }

三、Dao类

  1. package com.zking.dao;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import com.zking.entity.Student;
  6. import com.zking.util.DBHelper;
  7. /**
  8. * 数据库 登录查询 or 验证
  9. * 方法
  10. * @author Administrator
  11. *
  12. */
  13. public class StuDao {
  14. // //定义资源 即 声明对象
  15. // private Connection con;
  16. // private PreparedStatement ps;
  17. // private ResultSet rs;
  18. //传两个参数-用户名和 密码,为了连接实现数据库登录验证(查询)
  19. public Student login(String name,String pwd) {
  20. Student s = null;
  21. //声明对象
  22. Connection con = null;
  23. PreparedStatement ps = null;
  24. ResultSet rs = null;
  25. try {
  26. con = DBHelper.getCon();//连接数据库
  27. String sql = "select * form studentfx where sname = ? and spassword =?";
  28. ps = con.prepareStatement(sql);//创建对象
  29. ps.setString(1, name);
  30. ps.setString(2, pwd);//给占位符赋值
  31. rs = ps.executeQuery();//执行 SQL语句
  32. if(rs.next()) {
  33. //把数据存进 学生对象
  34. s = new Student(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4));
  35. return s;//如果数据库中有此人,返回 学生对象
  36. }
  37. } catch (Exception e) {
  38. e.printStackTrace();//处理异常信息
  39. }finally {
  40. DBHelper.close(con, ps, rs);//关闭连接
  41. }
  42. return null;//查无此人,返回 null
  43. }
  44. }

四、测试类

登录 login

  1. package com.zking.test;
  2. import com.zking.dao.StuDao;
  3. import com.zking.entity.Student;
  4. import javafx.application.Application;
  5. import javafx.geometry.Pos;
  6. import javafx.scene.Scene;
  7. import javafx.scene.control.Alert;
  8. import javafx.scene.control.Alert.AlertType;
  9. import javafx.scene.control.Button;
  10. import javafx.scene.control.Label;
  11. import javafx.scene.control.PasswordField;
  12. import javafx.scene.control.TextField;
  13. import javafx.scene.layout.FlowPane;
  14. import javafx.scene.layout.GridPane;
  15. import javafx.stage.Stage;
  16. /**
  17. * 登录 login
  18. * @author Administrator
  19. *
  20. */
  21. public class Login extends Application{
  22. //将元素定义在这个位置,其他地方也可调用
  23. StuDao sdao = new StuDao();//实例化 验证方法
  24. FlowPane fp = new FlowPane();//流式布局 对象
  25. GridPane gp = new GridPane();//网格布局 对象
  26. Scene scene = new Scene(fp, 300, 300);//布置 舞台
  27. //控件 3*2 三行两列
  28. //用户名
  29. Label l1 = new Label("用户名");
  30. TextField user = new TextField();
  31. //用户密码
  32. Label l2 = new Label("用户密码");
  33. PasswordField pwd = new PasswordField();
  34. //按钮
  35. Button b = new Button("登录");
  36. public void start(Stage stage) throws Exception {
  37. //控件放到布局中
  38. gp.getChildren().addAll(l1,user,l2,pwd,b);//先得到子节点,再添加控件
  39. //网格布局需 行*列 格式放置控件
  40. gp.add(l1, 0, 0);
  41. gp.add(user, 1, 0);//用户名
  42. gp.add(l2, 1, 0);
  43. gp.add(pwd, 1, 1);//用户密码
  44. gp.add(b, 2, 0);//登录 按钮
  45. //网格布局 整体居中
  46. gp.setAlignment(Pos.CENTER);//Pos->Position 位置
  47. gp.setHgap(15);//H:水平 水平间距 px
  48. gp.setVgap(15);//V:垂直 垂直间距 px
  49. //点击事件: login 登录
  50. b.setOnAction(a->{
  51. //获取输入的值
  52. String name = user.getText();
  53. String password = pwd.getText();
  54. //参数传到数据库内,调用方法
  55. Student s = sdao.login(name, password);//学生对象?! 返回 null 或 s 学生对象
  56. //判断登录 成功 or 失败
  57. if(s!=null) {//有这个学生对象,查询成功
  58. Alert al = new Alert(AlertType.INFORMATION, "登录成功,欢迎 "+s.getName());
  59. al.showAndWait();//弹窗 等待
  60. }else {//无此对象,查询失败
  61. Alert al = new Alert(AlertType.WARNING, "登录失败");
  62. al.showAndWait();//弹出 并显示
  63. }
  64. });
  65. stage.setScene(scene);//场景和 舞台绑定
  66. stage.show();//显示 舞台
  67. }
  68. public static void main(String[] args) {
  69. Application.launch();
  70. }
  71. }

注册 register

  1. package com.zking.test;
  2. import java.util.Optional;
  3. import java.util.StringJoiner;
  4. import javafx.application.Application;
  5. import javafx.application.Platform;
  6. import javafx.geometry.Pos;
  7. import javafx.scene.Scene;
  8. import javafx.scene.control.Alert;
  9. import javafx.scene.control.Alert.AlertType;
  10. import javafx.scene.control.Button;
  11. import javafx.scene.control.ButtonType;
  12. import javafx.scene.control.CheckBox;
  13. import javafx.scene.control.ChoiceBox;
  14. import javafx.scene.control.Label;
  15. import javafx.scene.control.PasswordField;
  16. import javafx.scene.control.RadioButton;
  17. import javafx.scene.control.TextField;
  18. import javafx.scene.control.ToggleGroup;
  19. import javafx.scene.layout.FlowPane;
  20. import javafx.scene.layout.GridPane;
  21. import javafx.scene.layout.HBox;
  22. import javafx.stage.Stage;
  23. /**
  24. * Regist 注册
  25. * @author Administrator
  26. *
  27. */
  28. public class Regist extends Application{
  29. //网格布局
  30. GridPane gp = new GridPane();
  31. Scene scene = new Scene(gp, 250, 300);
  32. //控件 6*2
  33. //账户
  34. Label l1 = new Label("用户名");
  35. TextField user = new TextField();//输入框
  36. //密码
  37. Label l2 = new Label("密码");
  38. PasswordField password = new PasswordField();//密码框
  39. //单选框 RadioButton
  40. Label l3 = new Label("性别");
  41. //默认可多选,必须放在同一组才可实现 单选功能
  42. ToggleGroup group = new ToggleGroup();//新建 组名
  43. RadioButton nan = new RadioButton("男");
  44. RadioButton nv = new RadioButton("女");//性别选择
  45. //一个位置只能放一个子节点,多个控件放置于布局内可实现
  46. HBox sex = new HBox(nan,nv);
  47. /*
  48. * 流式布局
  49. * FlowPane fp = new FlowPane(nan,nv);
  50. * 占用舞台位置太长,更优选择 水平布局
  51. * HBox 水平布局:只有一行,所有控件都在一行
  52. * VBox 垂直布局:只有一列,所有控件都在一列
  53. */
  54. //下拉框 ChoiceBox
  55. Label l4 = new Label("地址");
  56. ChoiceBox<String> c = new ChoiceBox<String>();//也是一个 List集合
  57. //多选框 CheckBox
  58. Label l5 = new Label("爱好");
  59. CheckBox c1 = new CheckBox("吃饭");
  60. CheckBox c2 = new CheckBox("睡觉");
  61. CheckBox c3 = new CheckBox("打豆豆");
  62. //三变一
  63. HBox like = new HBox(c1,c2,c3);
  64. //按钮
  65. Button b1 = new Button("注册");
  66. Button b2 = new Button("取消");
  67. public void start(Stage stage) throws Exception {
  68. //布局 位置
  69. gp.add(l1, 0, 0);
  70. gp.add(user, 1, 0);//账户
  71. gp.add(l2, 0, 1);
  72. gp.add(password, 1, 1);//密码
  73. gp.add(l3, 0, 2);
  74. gp.add(sex, 1, 2);//性别
  75. nan.setToggleGroup(group);
  76. nv.setToggleGroup(group);//放置同一组,实现单选功能
  77. nan.setSelected(true);//默认性别 男
  78. gp.add(l4, 0, 3);
  79. gp.add(c, 1, 3);//地址
  80. c.getItems().addAll("湖南","湖北","四川","广东","河南");//设置下拉选项
  81. c.setValue("湖南");//默认地址 湖南
  82. gp.add(l5, 0, 4);
  83. gp.add(like, 1, 4);//爱好
  84. gp.add(b1, 0, 5);
  85. gp.add(b2, 1, 5);//按钮
  86. //点击事件
  87. //1、注册
  88. b1.setOnAction(a->{
  89. //获取输入值
  90. String name = user.getText();//用户名
  91. String pwd = password.getText();//密码
  92. String sex = "男";//默认为男性
  93. if(nv.isSelected()) {
  94. sex = "女";//性别 女 被选中
  95. }//性别
  96. String address = c.getValue();//地址
  97. //字符连接器 StringJoiner
  98. StringJoiner j = new StringJoiner(",");//美化多选结果
  99. if(c1.isSelected()) {
  100. j.add(c1.getText());
  101. }//爱好:吃饭
  102. if(c2.isSelected()) {
  103. j.add(c2.getText());
  104. }//爱好:睡觉
  105. if(c3.isSelected()) {
  106. j.add(c3.getText());
  107. }//爱好:打豆豆
  108. String hobby = j.toString();//爱好 全部存进来
  109. //TODO:将数据放到数据库,插入
  110. //??? 作业 ???
  111. //打印
  112. System.out.println(name);
  113. System.out.println(pwd);
  114. System.out.println(sex);
  115. System.out.println(address);
  116. System.out.println(hobby);
  117. });
  118. //2、取消
  119. b2.setOnAction(a->{//要理解 要理解 要理解
  120. Optional<ButtonType> b = new Alert(AlertType.CONFIRMATION,"你真的要退出嘛 (o°ω°o)",ButtonType.YES,ButtonType.NO).showAndWait();
  121. if(b.get()==ButtonType.YES) {
  122. Platform.exit();//关闭界面 (和 X效果相同)
  123. }
  124. });
  125. //设置网格布局
  126. gp.setAlignment(Pos.CENTER);
  127. gp.setHgap(15);//水平间距
  128. gp.setVgap(15);//垂直间距
  129. stage.setScene(scene);//场景 和舞台 绑定
  130. stage.show();//显示 舞台
  131. }
  132. public static void main(String[] args) {
  133. Application.launch();
  134. }
  135. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/191705
推荐阅读
相关标签
  

闽ICP备14008679号