package gui;
//创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用
//增加按钮监听
//增加键盘监听
//键盘监听器: KeyListener
//keyPressed 代表 键被按下
//keyReleased 代表 键被弹起
//keyTyped 代表 一个按下弹起的组合动作
//KeyEvent.getKeyCode() 可以获取当前点下了哪个键
//把按钮监听中的按钮上的文字从“隐藏图片” 改为 "显示图片"。
//第一次点击的时候,会使得图片隐藏,第二次点击的时候,会使得图片显示,如此循环下去。
//一旦点击了"隐藏图片",按钮上的文字就要变成“显示图片” 。。。 如此循环
//提示: 调用JButton对象的setText改变按钮上的文字
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ActionListenerExercise {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f =new JFrame("LOL");
f.setSize(400,300);
f.setLocation(580,200);
f.setLayout(null);//java默认为flowLayout布局,设置null用来清空布局管理器,便于之后添加组件
//接下来设置显示图片
JLabel l =new JLabel();
ImageIcon i= new ImageIcon("e:/project/shana.png");
l.setIcon(i);
l.setBounds(140,50,i.getIconWidth(),i.getIconHeight());
//设置一个按钮
JButton b =new JButton("隐藏图片");
b.setBounds(150, 200, 100, 30);
//给按钮增加监听
b.addActionListener(new ActionListener(){
//当按钮被点击时,就会触发ActionEvent事件
//actionPerformed方法就会被执行
boolean hide =false;
public void actionPerformed(ActionEvent e) {
l.setVisible(hide);
hide =!hide;
b.setText(hide?"显示图片":"隐藏图片");
}
});
//给键盘增加监听
//这两个会有冲突,应该是设置焦点的问题
f.addKeyListener(new KeyListener(){
public void keyReleased(KeyEvent e) {
//39代表按下了“右键”
if(e.getKeyCode()==39) {
l.setLocation(l.getX()+ 10, l.getY());
f.requestFocus(); //这里再加上这一句
}
}
//键被按下
public void keyPressed(KeyEvent e) {
}
//一个按下弹起的组合动作
public void keyTyped(KeyEvent e) {
}
});
f.add(b);
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
//创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用
//增加按钮监听
//增加键盘监听
//键盘监听器: KeyListener
//keyPressed 代表 键被按下
//keyReleased 代表 键被弹起
//keyTyped 代表 一个按下弹起的组合动作
//KeyEvent.getKeyCode() 可以获取当前点下了哪个键
//把按钮监听中的按钮上的文字从“隐藏图片” 改为 "显示图片"。
//第一次点击的时候,会使得图片隐藏,第二次点击的时候,会使得图片显示,如此循环下去。
//一旦点击了"隐藏图片",按钮上的文字就要变成“显示图片” 。。。 如此循环
//提示: 调用JButton对象的setText改变按钮上的文字
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ActionListenerExercise {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f =new JFrame("LOL");
f.setSize(400,300);
f.setLocation(580,200);
f.setLayout(null);//java默认为flowLayout布局,设置null用来清空布局管理器,便于之后添加组件
//接下来设置显示图片
JLabel l =new JLabel();
ImageIcon i= new ImageIcon("e:/project/shana.png");
l.setIcon(i);
l.setBounds(140,50,i.getIconWidth(),i.getIconHeight());
//设置一个按钮
JButton b =new JButton("隐藏图片");
b.setBounds(150, 200, 100, 30);
//给按钮增加监听
b.addActionListener(new ActionListener(){
//当按钮被点击时,就会触发ActionEvent事件
//actionPerformed方法就会被执行
boolean hide =false;
public void actionPerformed(ActionEvent e) {
l.setVisible(hide);
hide =!hide;
b.setText(hide?"显示图片":"隐藏图片");
}
});
//给键盘增加监听
//这两个会有冲突,应该是设置焦点的问题
f.addKeyListener(new KeyListener(){
public void keyReleased(KeyEvent e) {
//39代表按下了“右键”
if(e.getKeyCode()==39) {
l.setLocation(l.getX()+ 10, l.getY());
f.requestFocus(); //这里再加上这一句
}
}
//键被按下
public void keyPressed(KeyEvent e) {
}
//一个按下弹起的组合动作
public void keyTyped(KeyEvent e) {
}
});
f.add(b);
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
在这里,运行了按钮监听之后,键盘监听无效,如果关闭按钮监听,键盘监听是有效的,所以有冲突的情况
查阅资料以后发现是焦点设置问题,待后续补充