扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
学习此内容前建议先去学习java基础知识: 匿名内部类 (学的多的可以用lambda表达式,更加简便)
成都创新互联公司专注于大兴安岭企业网站建设,自适应网站建设,成都做商城网站。大兴安岭网站建设公司,为大兴安岭等地区提供建站服务。全流程定制网站设计,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务好, 我们先看一下之前的代码(即一个窗口和一个按钮)
如果想看详细内容,链接为: (23条消息) java swing(GUI图形化界面)基础教程2-添加组件_尽辰的博客-博客_java窗口添加组件
public static void main(String[] args) {
JFrame frame=new JFrame();//这是一个窗口类
frame.setBounds(100,100,500,500);//设置窗口位置与大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭时会关闭所有窗口
JPanel panel=new JPanel();//创建一个面板,并且将这个面板添加到窗口里面去
frame.add(panel);
panel.setLayout(null);//取消默认的布局管理
JButton button=new JButton();//创建一个按钮,并且将这个按钮添加到面板上面
button.setText("按钮");//设置按钮的文字内容
button.setBounds(100,100,100,100);//设置按钮的位置大小
panel.add(button);//添加按钮到面板
frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面
}
现在问题是,虽然我们会创建一个窗口,并且可以给这个窗口添加一个按钮,但是这个按钮按了没有反应,没有发生任何事件,这并不是我们想要的,因此我们需要给这个按钮添加事件监听.
添加事件监听,英文单词分别为 add ,Action, Listener
所以代码为
button.addActionListener();
当然,括号内需要内容,将鼠标移动到方法上面,查看它需要什么
我们尝试new 一下
明显第一个就是我们要的,它是一个接口,我们直接按Tab键生成(涉及匿名内部类,需要自己去学习)
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
此处 actionPerformed方法大括号内就可以填: 点击这个按钮要发生的事件,例如下面这个代码
他的意思就是: 点击一下按钮,就输出一句 666
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(666);
}
});
现在我们已经初步完成,我们来看一下目前的全部代码:
public static void main(String[] args) {
JFrame frame=new JFrame();//这是一个窗口类
frame.setBounds(100,100,500,500);//设置窗口位置与大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭时会关闭所有窗口
JPanel panel=new JPanel();//创建一个面板,并且将这个面板添加到窗口里面去
frame.add(panel);
panel.setLayout(null);//取消默认的布局管理
JButton button=new JButton();//创建一个按钮,并且将这个按钮添加到面板上面
button.setText("按钮");//设置按钮的文字内容
button.setBounds(100,100,100,100);//设置按钮的位置大小
panel.add(button);//添加按钮到面板
//TODO ============== 上面是之前的代码 ===========================
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(666);
}
});
frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面
}
然后直接运行,我们点击一下按钮,发现控制台就输出了 666
不过吧,我们这个效果是在控制台上面,但是我们更希望效果出现在窗口上面,
就例如我把它改为下面这一段代码:
button.addActionListener(new ActionListener() {
int buttonNumber=1;
@Override
public void actionPerformed(ActionEvent e) {
button.setText("你点了"+buttonNumber+"下");
buttonNumber++;
}
});
这个可以自己运行一下看一下效果(其实直接读代码也很好理解)
现在你已经有了独自设置监听的能力了
你也可以凭自己的想象来写,例如点击之后改变窗口位置大小,点击之后跳出另一个窗口....
注意事项:
这里要说明一个问题: 就是我此处的 int buttonNumber=1; 是定义在 button.addActionListener(new ActionListener() { });内部,
但是,很多时候我们的变量是定义在外面的(因为可能需要被其他地方调用,而写在里面就不好调用到),如
结果它错误提示: buttonNumber 要为final ,这里也不细究为什么,我直接给出解决措施:
1. 多定义一个变量,然后赋值
int bn=1;
button.addActionListener(new ActionListener() {
int buttonNumber=bn;
@Override
public void actionPerformed(ActionEvent e) {
button.setText("你点了"+buttonNumber+"下");
buttonNumber++;
}
});
2. 将它变成静态的(类属性)
文章结束,若发现错误可直接指出
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流