javaswing绑定键盘事件窗口按下z键出现一个按钮为什么事件绑定不上

2114772318 2019-06-08 09:08:26
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class PlaneAndBullet implements Runnable{
public static void main(String[] args) {
new PlaneAndBullet().MyJFrame();

}
JButton jbt;
JButton jbt2;
void MyJFrame(){
JFrame jf=new JFrame("打飞机");
jf.setLayout(null);

BackGround backGround=new BackGround();

jf.setSize(500,300);
jf.setLocationRelativeTo(null);

ImageIcon imageIcon=new ImageIcon("fj.jpg");
jbt=new JButton(imageIcon);
jbt.setBounds(200,200,50,30);
jf.add(jbt);

int jbt_x=jbt.getX();
int jbt_y=jbt.getY();

jbt.setEnabled(true);
System.out.println(1);
jbt.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println(2);
int jbt_x=jbt.getX();
if(e.getKeyChar()=='a'){
System.out.println(3);
run();

}
}
});
System.out.println(5);

JButton jbt3=new JButton("飞机");
jbt3.setBounds(20,20,40,20);
jf.add(jbt3);




jf.requestFocus();

System.out.println(2000);
jf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println(90);
if(e.getKeyChar()=='z'){
jbt2=new JButton("子弹");
jbt2.setBounds(200,20,25,15);
jf.add(jbt2);
jf.repaint();
System.out.println(900000);
}
}
});


backGround.setBounds(0,0,500,300);
jf.add(backGround);
backGround.setPreferredSize(new Dimension(200,200));

/*ImageIcon imageIcon2=new ImageIcon("bj.jpg");
JLabel imgLabel=new JLabel(imageIcon2);
jf.getLayeredPane().add(imgLabel,new Integer(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,imageIcon2.getIconWidth(),imageIcon2.getIconHeight());
JPanel jPanel=(JPanel)jf.getContentPane();
jPanel.setOpaque(false);*/

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}

public void run(){
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(4);
System.out.println(jbt);
jbt.setLocation(jbt.getX()-10,jbt.getY());
jbt2.setLocation(jbt2.getX()-10,jbt2.getY());
jbt.repaint();
}
}
}
class BackGround extends Canvas{
public void paint(Graphics g){
BufferedImage bufferedImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
try {
bufferedImage=ImageIO.read(new FileInputStream("bj.jpg"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage(bufferedImage,0,0,null);
}
}
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-06-13
  • 打赏
  • 举报
回复
一般不会把监听器直接绑在jframe上会有很多问题,先插入一个容器jpanel把监听器加在jpanel上吧。
2114772318 2019-06-12
  • 打赏
  • 举报
回复
这里有一个失去焦点的问题,要在需要绑定事件的控件上获得焦点 ps:setFocusable()方法要放在setvisible()方法前面,requestFocus()方法要放在setVisible()方法后面
内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提取—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧