Java焦点事件

组件是可以触发焦点事件的.组件可以使用addFocusListener(FocusListener listener)注册焦点事件
创建的监视器必须实现FocusListener接口//改接口有两个方法

  • public void focusGained(FocusEvent e)//获取焦点
  • public void focusLost(FocusEvent e)//失去焦点

简单的例子

首先创建一个实现FocusListener接口的类

import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class Focus implements FocusListener {
    myWindow view;
    public void setView(myWindow view) {
        this.view = view;
    }
    @Override
    public void focusGained(FocusEvent focusEvent) {    //获取焦点时
        if (focusEvent.getSource() == view.jTextField){
            view.jTextField.setBackground(new Color(0x674553));
        }
        else if(focusEvent.getSource() == view.jButton){
            view.jButton.setText("Gained");
        }
    }
    @Override
    public void focusLost(FocusEvent focusEvent) {  //失去焦点时
        if (focusEvent.getSource() == view.jTextField){
            view.jTextField.setBackground(new Color(0xFFFFFF));
        }
        else if(focusEvent.getSource() == view.jButton){
            view.jButton.setText("Lost");
        }
    }
}

然后创建JFrame的子类

import javax.swing.*;
import java.awt.*;

public class myWindow extends JFrame {
    Focus focus;    //实现了焦点接口的类
    JTextField jTextField;
    JButton jButton;
    myWindow(){
        setTitle("焦点事件");
        setBounds(300,300,400,400);
        setLayout(new FlowLayout());    //设置流体布局
        Container con = this.getContentPane();
        con.setBackground(new Color(0x366728));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        init();
        validate(); //验证操作
    }
    public void init(){
        focus = new Focus();
        focus.setView(this);
        jTextField = new JTextField("0",10);
        jTextField.addFocusListener(focus);
        add(jTextField);
        jButton = new JButton("ENTER");
        jButton.addFocusListener(focus);
        add(jButton);
    }
}

最后进行测试

public class Example {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();
    }
}

运行结果

java 获得string java 获得焦点_java 获得string

键盘事件

当一个组件处于激活状态时,通过敲击键盘可以触发键盘事件

  • addKeyListener(KeyListener listener)//想组件注册键盘监视器

使用KeyListener接口处理键盘事件有3种方法

  • public void keyPressed(KeyEvent e)//当用户在键盘上按下某个键时
  • public void keyReleased(KeyEvent e)//当用户在键盘是释放某个键时
  • public void keyTyped(KeyEvent e)//当用户在键盘上按下某个键接着又释放时

另外KeyEvent事件的方法

  • public int getKeyCode()//该方法返回一个键码值/通过该方法可以判断用户按下了键盘上的哪个值

下面的例子是用户输入序列号是自动换行的例子

首先创建一个实现了焦点接口和键盘接口的类

import javax.swing.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Key implements FocusListener, KeyListener {    //实现了焦点接口和键盘接口的监视器
    myWindow view;
    public void setView(myWindow view) {
        this.view = view;
    }
    @Override
    public void focusGained(FocusEvent focusEvent) {
        JTextField jTextField = (JTextField)focusEvent.getSource(); //获取当前事件源
        jTextField.setText(null);   //当获取焦点时将文本框设为空
    }
    @Override
    public void focusLost(FocusEvent focusEvent) {
    }
    @Override
    public void keyTyped(KeyEvent keyEvent) {
    }
    @Override
    public void keyPressed(KeyEvent keyEvent) {
        JTextField textField = (JTextField)keyEvent.getSource();    //文本框获取当前事件源
        if (textField.getCaretPosition()>=6){   //当到7个的时候
            textField.transferFocus();  //切换焦点
        }
    }
    @Override
    public void keyReleased(KeyEvent keyEvent) {

    }
}

然后创建JFrame的子类

import javax.swing.*;
import java.awt.*;

public class myWindow extends JFrame {
    Key key;
    JTextField jTextFields[] = new JTextField[3];   //长度为3的数组
    JButton jButton;
    myWindow(){
        setBounds(300,300,400,400);
        setLayout(new FlowLayout());    //设置流体布局
        setTitle("序列号输入");
        Container con = this.getContentPane();
        con.setBackground(new Color(0x366728)); //设置背景颜色
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);   //设置可视化
        init();
        validate();
    }
    public void init(){
        key = new Key();
        key.setView(this);  //
        for (int i = 0; i <jTextFields.length ; i++) {
            jTextFields[i] = new JTextField(7);
            jTextFields[i].addFocusListener(key);
            jTextFields[i].addKeyListener(key);
            add(jTextFields[i]);
        }
        jButton = new JButton("ENTER");
        add(jButton);
        jTextFields[0].requestFocusInWindow();  //窗口一打开就获取焦点
    }
}

最后可以进行测试

public class Example {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();

    }
}

运行结果

java 获得string java 获得焦点_ide_02

窗口事件

对于JFrame及子类创建的窗口可以调用setDefaultCloseOperation() //设置默认的关闭操作
DO_NOTHING_ONCLOSE//关闭时什么都不做
HIDE_ON_CLOSE//隐藏当前窗口
DISPOSE_ON_CLOSE//隐藏当前窗口,并释放窗体占有的其他资源
EXIT_ON_ CLOSE//结束窗口程序

WindowEvent事件源
也就是在窗口发生的事件
另外要明确的是如果要用到WindowEvent事件的话name一开始就不要设置关闭操作

WindowListener接口

  • public void windowOpened(WindowEvent windowEvent)//当窗口打开时
  • public void windowClosing(WindowEvent windowEvent)//当窗口正在被关闭时(用的最多/例如是问你保不保存)
public void windowClosing(WindowEvent windowEvent) {
        System.exit(0);	//退出程序运行
    }
  • public void windowClosed(WindowEvent windowEvent)//当窗口关闭后
  • public void windowIconified(WindowEvent windowEvent)//当窗口图标化时(也就是最小化时)
  • public void windowDeiconified(WindowEvent windowEvent)//当窗口撤销图标化时
  • public void windowActivated(WindowEvent windowEvent)//从非激活状态到激活状态时
  • public void windowDeactivated(WindowEvent windowEvent)//从激活状态到未激活状态时

由于事项一个接口要不接口内的方法进行重写,那么造成不必要的方法也要将它写出,形成低效
因此Java提供了适配器的概念/例如WindowAdapter类,因为这个类实现了WindowListener接口,所以它的子类就继承了接口的方法,再所以用他的子类就可以想用哪个方法就对哪个方法进行重写即可/其余的监视器也有相应的适配器

CSS

CSS 外边距合并CSS 定位 (Positioning)

JavaScript

JavaScript JSONJavaScript 表单

CET4P164

remind
mechanical
patient
altitude
implement
ditch
gear
brake
data
ignorance
bake
ballon
considerate