当前位置: 代码迷 >> 综合 >> 设置按钮的监听器 JButton
  详细解决方案

设置按钮的监听器 JButton

热度:71   发布时间:2023-12-06 02:31:50.0

设计任何窗体的基本流程:

1.实例化需求中的所有中间组件及基础组件

2.将实例化好的基础组件添加到指定的中间组件中。

3.将所有的中间组件添加到窗体容器中指定的位置。

基础组件的动作监听
跟现实生活中的监听器类似,报警器。只要触发,立刻报警。
可以再按钮上设置动作监听后,以后只要触碰这个按钮就可以触发进行相关操作。

 在按钮设置动作监听时,调用的方法addActionListener(ActionListener) ActionListener: 接口 不能实例化

this.setTitle("yonghjudenlu");this.setSize(300, 300);this.setDefaultCloseOperation(3);this.setLocationRelativeTo(null);JPanel jpa = new JPanel();
JButton jba = new JButton("登录");jpa.add(jba);
this.getContentPane().add(jpa);
通过接口匿名实例化后自己实现自己,重写其中所有的抽象方法 jba.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("MD,你点击了我");}
})
this.setVisible(true);

登陆界面详细过程

package com.zking.swing3.ui;import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;/*** 设计任何窗体的基本流程: 1.实例化需求中的所有中间组件及基础组件 2.将实例化好的基础组件添加到指定的中间组件中。* 3.将所有的中间组件添加到窗体容器中指定的位置。* * * ----------------------------------------------- 基础组件的动作监听* 跟现实生活中的监听器类似,报警器。只要触发,立刻报警。* * 可以再按钮上设置动作监听后,以后只要触碰这个按钮就可以触发进行相关操作。* **/
public class LoginUI extends JFrame {/** 分析:用户登录 结构 上中下 流式布局,边框布局,网袋布局* * 记住一点:所有实例化对象的代码 最好是最大作用域 (在类的里面,方法的外面) 目的只有一个:任何地方都能调用,在别的类中也可以调用到。*//*** 在按钮设置动作监听时,调用的方法addActionListener(ActionListener) ActionListener: 接口 不能实例化*/// 1自定义类实现接口 内部类// class sb implements ActionListener{//// @Override// public void actionPerformed(ActionEvent e) {// System.out.println("MD,你点击了我");// }//// }// 上private JPanel jpa = new JPanel();// 用户标签private JLabel jla = new JLabel("用户登录");// 中// 1.实例化网袋布局对象private GridBagLayout gbl = new GridBagLayout();// 2.实例化网袋布局约束对象private GridBagConstraints gbc = new GridBagConstraints();private JPanel jpb = new JPanel();// 账户标签private JLabel jlb = new JLabel("账户");// 账户文本输入框private JTextField jtfa = new JTextField(15);// 密码标签private JLabel jlc = new JLabel("密码");// 密码框private JPasswordField jpfa = new JPasswordField(15);// 下private JPanel jpc = new JPanel();// 登录按钮private JButton jba = new JButton("登录");// 注册按钮private JButton jbb = new JButton("注册");// 退出按钮private JButton jbc = new JButton("退出");public LoginUI() {this.setTitle("yonghjudenlu");this.setSize(300, 300);this.setDefaultCloseOperation(3);this.setLocationRelativeTo(null);// ----------------------------------------------// 将实例化好的基础组件添加到指定的中间组件// 上jpa.setBackground(Color.YELLOW);jla.setFont(new Font("宋体", Font.BOLD, 30));jla.setForeground(Color.red);jpa.add(jla);// 中(假设已做好)jpb.setBackground(Color.pink);// 1.设置jpb组件的布局为网袋布局jpb.setLayout(gbl);// 开始布局// 账户// ①抓取坐标gbc.gridx = 0;gbc.gridy = 0;// ②设置坐标gbl.setConstraints(jlb, gbc);// ③添加组件到JPanel面板中jpb.add(jlb);// 根据isets属性进行设置// Insets(top, left, bottom, right) top 上 left左 bottom下 right右gbc.insets = new Insets(0, 10, 0, 0);// 账户输入框// ①抓取坐标gbc.gridx = 1;gbc.gridy = 0;// ②设置坐标gbl.setConstraints(jtfa, gbc);// ③添加组件到JPanel面板中jpb.add(jtfa);gbc.insets = new Insets(10, 0, 0, 0);// 密码// ①抓取坐标gbc.gridx = 0;gbc.gridy = 1;// ②设置坐标gbl.setConstraints(jlc, gbc);// ③添加组件到JPanel面板中jpb.add(jlc);gbc.insets = new Insets(10, 10, 0, 0);// 密码框// ①抓取坐标gbc.gridx = 1;gbc.gridy = 1;// ②设置坐标gbl.setConstraints(jpfa, gbc);// ③添加组件到JPanel面板中jpb.add(jpfa);// 下jpc.setBackground(Color.GREEN);jpc.add(jba);jpc.add(jbb);jpc.add(jbc);// 3.将所有的中间组件添加到窗体容器中指定的位置this.getContentPane().add(jpa, "North");this.getContentPane().add(jpb, "Center");this.getContentPane().add(jpc, "South");/*** 基础组件添加到窗体中后,无任何动态效果,所以需要利用Swing中的动作监听达到动态的效果*//*** 需求:给登录的按钮设置动作监听器 以后当点击这个登录按钮时,可以将输入框中的数据获取到传输到数据库中判断,看数据表中是否存在这个用户名和密码 如果存在* 则直接登录成功 跳转到指定的页面去*/// sb s = new sb();// jba.addActionListener(s);/*** 通过接口匿名实例化后自己实现自己,重写其中所有的抽象方法 推荐;10颗星*/jba.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// System.out.println("我是匿名实例化接口自己实现自己出来的");// 当点击登录按钮时,立刻抓取到输入框中的数据// 关于输入框中的如何获取数据 getText();// 获取文本输入框中的输入的数据String username = jtfa.getText();// System.out.println("username = "+username);// 获取密码String pwd = jpfa.getText();// System.out.println("pwd = "+pwd);// 连接数据库、// StudentDao sd = new StudentDao();// sd.login(username,pwd);// 假设数据库中存在admin和123if ("admin".equals(username) && "123".equals(pwd)) {// 登录成功JOptionPane.showMessageDialog(null, "登录成功");// 关闭当前登录窗口// dispose方法// 注意事项:匿名接口实现类中不能直接调用外部类的this对象// 必须通过外部类的类名先调用this后才能通过this调用其他的方法LoginUI.this.dispose();} else {// 账户或密码错误JOptionPane.showMessageDialog(null, "账户或密码错误");// 清空无效的数据jtfa.setText("");jpfa.setText("");}}});this.setVisible(true);}public static void main(String[] args) {new LoginUI();}}