刚学习JAVA,做了一个计算机面板。发现按键设置鼠标事件之后,快速点击传入数据会遗漏(mouseClicked),用移入和移出却不会(mouseEntered)
import javax.swing.;
import java.awt.;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
public class 计算机窗口 extends JFrame {
public static void main(String[] args) {
new 计算机窗口("计算器");
}
public 计算机窗口(String title){
JFrame jf=new JFrame(title);
jf.setVisible(true);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setBounds(500,500,400,625);
jf.setResizable(false);//不可更改主窗口大小
Container 窗体容器=jf.getContentPane();
窗体容器.setBackground(Color.ORANGE);
窗体容器.setLayout(null);
JButton[] num=new JButton[9];
for (int i=0,j=1;i<9;i++,j++) {
num[i] = new JButton(Integer.toString(j));
窗体容器.add(num[i]); }
Color co=num[0].getBackground();
for(int y=1,i=0;y<=3;y++){
for (int x=1;x<=3;x++){
num[i].setBounds(100x-100,120y,100,119);
i=i+1; } }
JButton other[]=new JButton[8];
other[0]=new JButton("+");
other[1]=new JButton("-");
other[2]=new JButton("*");
other[3]=new JButton("/");
other[4]=new JButton("=");
other[5]=new JButton("π");
other[6]=new JButton("0");
other[7]=new JButton(".");
for (int i=0;i<8;i++){
窗体容器.add(other[i]);
}
for(int y=1,i=0;y<6;y++,i++){
other[i].setBounds(300,(y-1)*120,100,119); }
for(int x=1,i=5;i<8;i++,x++){
other[i].setBounds(100*(x-1),480,100,119); }
JButton 屏幕=new JButton("屏幕");
窗体容器.add(屏幕);
屏幕.setBounds(1,1,300,119);
Component items[]=窗体容器.getComponents();
List jbt=new ArrayList<>();
for (Component C:items) {
if (C instanceof JButton) {
jbt.add((JButton) C);
System.out.println(((JButton) C).getText());
}
}
for (JButton A:jbt){
A.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
屏幕.setText(A.getText());
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
A.setBackground(Color.gray);
}
@Override
public void mouseExited(MouseEvent e) {
A.setBackground(co);
}
});
} }}
没有报错