java 实现鼠标点击文本框获取焦点

在文本框上添加鼠标监听事件,重写mouseClicked函数,在函数里面利用requestFocus使文本框获取焦点。我自己写了一个简单的计算器程序,可以通过点击文本框使文本框获取焦点,之后点击相应的数字键输入。

实现结果为:

代码如下:

package test1;

import java.awt.Component;
import java.awt.KeyboardFocusManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;

public class Computer  extends JFrame implements ActionListener, MouseListener {
    public static void main(String[] args) {
        new Computer();
    }
    JTextField text1;//声明相应的组件
    JLabel label1;
    JTextField text2;
    JLabel label2;
    JTextField text3;
    JButton button1;
    JButton button2;
    JButton button3;
    JButton button4;
    JButton button[];
    JPanel panel;
    boolean text11;
    boolean text22;
    public Computer() {
        panel=new JPanel();                //初始化相应的组件
        text1=new JTextField(10);
        text2=new JTextField(10);
        text3=new JTextField(10);
        label1=new JLabel();
        label2=new JLabel();
        button1=new JButton("加");
        button2=new JButton("减");
        button3=new JButton("乘");
        button4=new JButton("除");
        button=new JButton[10];
        
        panel.add(text1);        //将组件添加到窗口中
        panel.add(label1);
        panel.add(text2);
        panel.add(label2);
        panel.add(text3);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        for(int i=0;i<10;i++) {            //使用数组添加0~9按钮
            button[i]=new JButton(String.valueOf(i));
            panel.add(button[i]);
        }
        
        text1.addMouseListener(this);        //添加相应的监听
        text2.addMouseListener(this);
        text1.addActionListener(this);
        text2.addActionListener(this);
        text3.addActionListener(this);
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        button4.addActionListener(this);
        for(int i=0;i<10;i++) {
            button[i].addActionListener(this);
        }
        
        this.setContentPane(panel);        //窗体设置
        this.setTitle("计算器");
        this.setSize(600,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public void actionPerformed(ActionEvent e) {    //事件相应的处理办法
        if(e.getSource()==button1) {
            double a=Double.valueOf(text1.getText().toString());
            double b=Double.valueOf(text2.getText().toString());
            label1.setText("+");
            label2.setText("=");
            text3.setText(String.valueOf(a+b));
        }else if(e.getSource()==button2) {
            double a=Double.valueOf(text1.getText().toString());
            double b=Double.valueOf(text2.getText().toString());
            label1.setText("-");
            label2.setText("=");
            text3.setText(String.valueOf(a-b));
        }else if(e.getSource()==button3) {
            double a=Double.valueOf(text1.getText().toString());
            double b=Double.valueOf(text2.getText().toString());
            label1.setText("*");
            label2.setText("=");
            text3.setText(String.valueOf(a*b));
        }else if(e.getSource()==button4) {
            double a=Double.valueOf(text1.getText().toString());
            double b=Double.valueOf(text2.getText().toString());
            label1.setText("*");
            label2.setText("=");
            text3.setText(String.valueOf(a*b));
        }
        for(int i=0;i<10;i++) {
            if(e.getSource()==button[i]) {
                if(text11) {
                    if(text1.getText().toString().equals("")) {
                        text1.setText(String.valueOf(i));
                    }else {
                        String a=text1.getText().toString();
                        text1.setText(a+String.valueOf(i));
                    }
                }else if(text22) {
                    if(text2.getText().toString().equals("")) {
                        text2.setText(String.valueOf(i));
                    }else {
                        String a=text2.getText().toString();
                        text2.setText(a+String.valueOf(i));
                    }
                }
            }
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {    //重写mouxeClick方法,实现文本狂获取焦点
        // TODO Auto-generated method stub
        if(e.getSource()==text1) {
            text1.requestFocus();
            text11=true;
            text22=false;
        }else if(e.getSource()==text2) {
            text2.requestFocus();
            text11=false;
            text22=true;
        }
        
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
}


猜你喜欢

转载自blog.csdn.net/LYGliyaogang/article/details/80198573