700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java swing(GUI图形化界面)基础教程3-添加事件监听1

java swing(GUI图形化界面)基础教程3-添加事件监听1

时间:2019-03-02 10:25:18

相关推荐

java swing(GUI图形化界面)基础教程3-添加事件监听1

学习此内容前建议先去学习java基础知识: 匿名内部类 (学的多的可以用lambda表达式,更加简便)

好, 我们先看一下之前的代码(即一个窗口和一个按钮)

如果想看详细内容,链接为:(23条消息) java swing(GUI图形化界面)基础教程2-添加组件_尽辰的博客-CSDN博客_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() {@Overridepublic void actionPerformed(ActionEvent e) {}});

此处 actionPerformed方法大括号内就可以填: 点击这个按钮要发生的事件,例如下面这个代码

他的意思就是: 点击一下按钮,就输出一句 666

button.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(666);}});frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面}

然后直接运行,我们点击一下按钮,发现控制台就输出了 666

不过吧,我们这个效果是在控制台上面,但是我们更希望效果出现在窗口上面,

就例如我把它改为下面这一段代码:

button.addActionListener(new ActionListener() {int buttonNumber=1;@Overridepublic 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;@Overridepublic void actionPerformed(ActionEvent e) {button.setText("你点了"+buttonNumber+"下");buttonNumber++;}});

2. 将它变成静态的(类属性)

文章结束,若发现错误可直接指出

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。