在文本框上添加鼠标监听事件,重写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
}
}