当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎么使JButton不影响KeyListener
帖子发表于 : 2013-04-13 11:36 

注册: 2013-03-30 13:26
帖子: 7
系统: ubuntu12.10
送出感谢: 0 次
接收感谢: 0 次
//如题

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BallDemo extends JFrame{
private BallMove ball=new BallMove(10);
private JButton jbRight=new JButton("Right");
private JButton jbLeft=new JButton("Left");
private JButton jbUp=new JButton("Up");
private JButton jbDown=new JButton("Down");
private ButtonListener listener=new ButtonListener();
public BallDemo(){

JPanel p=new JPanel(new GridLayout(1,4));
p.add(jbRight);
p.add(jbLeft);
p.add(jbUp);
p.add(jbDown);


add(ball,BorderLayout.CENTER);
add(p,BorderLayout.SOUTH);

jbRight.addActionListener(listener);
jbLeft.addActionListener(listener);
jbUp.addActionListener(listener);
jbDown.addActionListener(listener);
ball.setFocusable(true);
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new BallDemo();
frame.setSize(200,200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}

private class BallMove extends JPanel{
private int radius;
private int x=100;
private int y=100;
public BallMove(){
this(0);
}

public BallMove(int radius){
this.radius=radius;
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_UP:Up();break;
case KeyEvent.VK_DOWN:Down();break;
case KeyEvent.VK_LEFT:Left();break;
case KeyEvent.VK_RIGHT:Right();break;
default:break;
}
}
});

}

protected void paintComponent(Graphics g){
super.paintComponent(g);

g.drawOval(x, y, 2*radius, 2*radius);
}

public void Right(){
this.x+=10;
repaint();
}
public void Left(){
this.x-=10;
repaint();
}

public void Up(){
this.y-=10;
repaint();
}
public void Down(){
this.y+=10;
repaint();
}
}
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==jbRight)
ball.Right();
else if(e.getSource()==jbLeft)
ball.Left();
else if(e.getSource()==jbUp)
ball.Up();
else if(e.getSource()==jbDown)
ball.Down();
else ;
}
}

}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎么使JButton不影响KeyListener
帖子发表于 : 2013-04-13 11:38 

注册: 2013-03-30 13:26
帖子: 7
系统: ubuntu12.10
送出感谢: 0 次
接收感谢: 0 次
点击JButton后,KeyListener不能再用了....怎么改才能使JButton和KeyListener并行使用呢?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎么使JButton不影响KeyListener
帖子发表于 : 2013-04-26 11:53 
头像

注册: 2009-12-01 13:34
帖子: 78
送出感谢: 2
接收感谢: 5
俄罗斯方块……

代码:
jframe.getContentPane().requestFocus();


_________________
myshell^_^
xfce4.10最好用了……
舒适的滚轮升起焦点设计,大量快捷键,alt移动,糟糕的桌面图标……
珍爱生命,LFS 三思~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译