Yes ,I can ! 2019-11-24 18:47 采纳率: 0%
浏览 299

Java中关于适配器对事件的处理问题??

import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class Calculator extends JFrame{
private JTextField jf_1, jf_2;
private JButton jb;
private JPanel jp=new JPanel(null);
private String str[] = {"MC","MR","MS","M+","M-","←","CE","C","±","√","7","8","9",
"/","%","4","5","6","*","1/x","1","2","3","-","=","0",".","+"};
/**
* 设置总体布局
/
public Calculator(){
super("计算器");
//this.setLayout(null);
this.setSize(210, 330); //设置frame的宽和高
this.setResizable(false);//设置frame的大小无法改变
//JPanel jp=new JPanel(null);//等价于 JPanel jp=new JPanel(); jp.setLayout(null);可自行设计布局
//jp.setBounds(1000,100,20,24);//设置面板在frame的位置及自身大小
/
*显示屏**/
jf_1 = new JTextField("");
jf_2 = new JTextField("0");

    jf_1.setEnabled(false);//设置该组件不能再次被输入文本
    jf_2.setEnabled(false);

    jf_1.setBounds(0, 0, 205, 30);
    jf_2.setBounds(0, 30, 205, 30);

    jf_1.setHorizontalAlignment(JLabel.RIGHT);//设置文本在组件中的显示位置
    jf_2.setHorizontalAlignment(JLabel.RIGHT);

    /**按钮 35px*29px 28个***/



    /**前24个**/
    for(int i=0; i<24; i++)
    {
        jb = new JButton(str[i]);
        jb.setMargin(new java.awt.Insets(0,0,0,0)); //命令按钮里的文本距离图标上左下右距离
        jb.setBounds(i%5*(35+5), 60+i/5*(30+5)+5, 35, 30);//设置命令按钮距离面板左,上距离。图标的长宽。

        jb.addMouseListener(new MyMouseListener());
        jp.add(jb);                                         //两命令按钮间的垂直间隔为5,水平间隔为7
    }
    jb = new JButton(str[24]); //添加"="
    jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
    jb.setBounds((24%5)*(35+5), 60+24/5*(30+5)+5, 35, 30+30+5);
    jb.addMouseListener(new MyMouseListener());
    jp.add(jb);

    jb = new JButton(str[25]); //添加"0"
    jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
    jb.setBounds((25%5)*(35+5), 60+25/5*(30+5)+5, 35+35+5, 30);
    jb.addMouseListener(new MyMouseListener());
    jp.add(jb);

//

// jb = new JButton(str[26]); //添加"."
// jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
// jb.setBounds((27%5)*(35+5), 60+27/5*(30+5)+5, 35, 30);
// jb.addMouseListener(new MyMouseListener());
// jp.add(jb);
//

// jb = new JButton(str[27]); //添加"+"
// jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
// jb.setBounds((28%5)*(35+5), 60+28/5*(30+5)+5, 35, 30);
// jp.add(jb);
//

jp.add(jf_1);
jp.add(jf_2);

    this.add(jp);
    this.setVisible(true);
}

/**
 * 内部类:事件处理
 * @author 
 *
 */
class MyMouseListener extends MouseAdapter{

    public void mouseClicked(MouseEvent e){
        JButton jbb = (JButton)e.getSource();
        if(jbb.getText() == "="){
            jf_2.setText("jk");
            JButton j ;
            j = new JButton(str[26]); //添加"."
            j.setMargin(new java.awt.Insets(0, 0, 0, 0));
            j.setBounds((27%5)*(35+5), 60+27/5*(30+5)+5, 35, 30);
        //  j.addMouseListener(new MyMouseListener());
            //Calculator.this.jp.add(j);
            Calculator.this.add(jp.add(j));
            Calculator.this.setVisible(true);    
            //点击“=”按钮后,“.”为什么不是添加在"0"的后面啊???

        }
    }
}
public static void main(String arg[]){
    new Calculator();
}

}

  • 写回答

1条回答 默认 最新

  • D狂风R 2019-11-24 22:58
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)