CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

事件监听的问题

楼主lizi02(冬虫夏草)2005-12-08 21:21:14 在 Java / J2SE / 基础类 提问

我的一个面板上有个JComboBox,然后我添加了一个监听键盘的Down键的方法,  
  可是我按Down的时候,那个JComboBox就变化为下拉筐里面的内容,  
  怎么让我键盘监听的事件执行啊?    
  问题点数:20、回复次数:7Top

1 楼lizi02(冬虫夏草)回复于 2005-12-08 21:34:04 得分 0

=啊Top

2 楼freego1026(飘荡)回复于 2005-12-09 00:33:54 得分 5

源码呢Top

3 楼Albert_1030()回复于 2005-12-09 07:31:57 得分 6

用ItemListener监听器,Combo的Item改变会触发itemStateChangedTop

4 楼lizi02(冬虫夏草)回复于 2005-12-09 09:28:22 得分 0

//我是加的itemlistener啊  
   
  package   src;  
  import   java.awt.*;  
  import   java.awt.event.*;  
   
  import   javax.swing.JComboBox;  
  import   javax.swing.JLabel;  
  import   src.Diamond;  
  import   javax.swing.*;  
   
  /**  
    *   @author   栖息的企鹅  
    *    
    *主要面板,方块就在这里下落.  
    *主要是在构造函数里面加入画出table的方法,还有一个重要方法就是判断一行满了的时候的删除工作  
    *另外,这个面板还负责监听Play的时候键盘的动作.  
    *  
    *这个类主要是构造单机的时候界面,包括一个mainTable&中间的一些控制的部件.  
    */  
  public   class   GameTable   extends   Panel   implements   KeyListener,ActionListener,ItemListener  
  {  
  public   int   rowNum;  
  public   int   colNum;  
  public   int[][]   diamondTable;  
  public   int[][]   nextDiamondTable;  
  public   String[]   speedList={"1","2","3","4","5","6","7","8","9","10"};  
  public   JComboBox   speedBox;  
  public   JLabel   scoreLabel;  
  public   JButton   startBtn;  
  public   JButton   reStartBtn;  
  /*temp变量,为画Diamond的时候需要用到*/  
  public   Graphics   tempG;  
  //public   int[][]   partten;  
   
  /*在这里生成一个Diamond*/  
  public   Diamond   diamond;  
  public   elsfkGame   mainGame;  
  public   JButton   tempBtn;  
   
  public   GameTable(elsfkGame   mainGame)  
  {  
  this.mainGame=mainGame;  
  rowNum=24;  
  colNum=16;  
  diamondTable=new   int[rowNum][colNum];  
  nextDiamondTable=new   int[4][4];  
  for(int   i=0;i<rowNum;i++)  
  for(int   j=0;j<colNum;j++)  
  diamondTable[i][j]=0;  
  for(int   i=0;i<4;i++)  
  for(int   j=0;j<4;j++)  
  nextDiamondTable[i][j]=0;  
  /*初始化Diamond*/  
  diamond=new   Diamond(this);  
  tempG=this.getGraphics();  
   
   
   
  this.setLayout(null);  
   
  /*画中间的一些部件.*/  
  /*先画一个speedBox*/  
  speedBox=new   JComboBox(speedList);  
  speedBox.setBackground(Color.LIGHT_GRAY);  
  speedBox.addItemListener(this);  
  speedBox.setBounds(303,145,60,20);  
  speedBox.setEditable(false);  
  this.add(speedBox);  
   
  /*再画一个label显示分数*/  
  scoreLabel=new   JLabel("0.00");  
  scoreLabel.setBackground(Color.LIGHT_GRAY);  
  scoreLabel.setBounds(303,200,80,20);  
  scoreLabel.setBackground(Color.LIGHT_GRAY);  
  this.add(scoreLabel);  
   
   
  /*弄两Button上去*/  
  startBtn=new   JButton("start");  
  startBtn.addActionListener(this);  
  startBtn.setBackground(Color.LIGHT_GRAY);  
  startBtn.setBounds(303,250,80,20);  
  this.add(startBtn);  
   
  reStartBtn=new   JButton("reStart");  
  reStartBtn.setToolTipText("reStart.");  
  reStartBtn.addActionListener(this);  
  reStartBtn.setBackground(Color.LIGHT_GRAY);  
  reStartBtn.setBounds(303,280,80,20);  
  this.add(reStartBtn);  
   
  this.addKeyListener(this);  
  }  
   
  public   void   paint(Graphics   g)  
  {  
  //画格子啊  
  for(int   i=0;i<rowNum;i++)  
  for(int   j=0;j<colNum;j++)  
  {  
  if(diamondTable[i][j]==0)  
  {  
  g.setColor(Color.LIGHT_GRAY);  
  g.fill3DRect(20+15*j+2,20+15*i+2,15,15,true);  
  }  
  else   if(diamondTable[i][j]==1)  
  {  
  g.setColor(Color.ORANGE);  
  g.fill3DRect(20+15*j+2,20+15*i+2,15,15,true);  
  }  
  }  
   
   
  /*  
    *   画next   Diamond    
    *   初始点的坐标是300,50    
    *   x轴上画了table后占用了260  
    *    
    *   */  
  g.setColor(Color.RED);  
  g.drawString("下一个Diamond:",300,35);  
  for(int   i=0;i<4;i++)  
  for(int   j=0;j<4;j++)  
  {  
  if(nextDiamondTable[i][j]==0)  
  {  
  g.setColor(Color.LIGHT_GRAY);  
  g.fill3DRect(300+15*j+2,50+15*i+2,15,15,true);  
  }  
  else   if(nextDiamondTable[i][j]==1)  
  {  
  g.setColor(Color.ORANGE);  
  g.fill3DRect(300+15*j+2,50+15*i+2,15,15,true);  
  }  
  }  
   
  g.setColor(Color.RED);  
  g.drawString("Speed:",303,140);  
   
  speedBox.repaint();  
  scoreLabel.repaint();  
  startBtn.repaint();  
  reStartBtn.repaint();  
  }  
   
  /*呵呵   这个方法当真能消除闪烁!!*/  
  public   void   update(Graphics   g)  
  {  
  paint(g);  
  }  
   
  /*绘制出一个GameTable上面的Diamond*/  
  public   void   drawDiamond(int   tableGridState)  
  {  
  for(int   i=0;i<4;i++)  
  for(int   j=0;j<4;j++)  
  {  
  if(tableGridState==1)  
  {  
  tempG.setColor(Color.ORANGE);  
  tempG.fill3DRect(280+15*j+2,20+15*i+2,15,15,true);  
  }  
  else   if(tableGridState==0)  
  {  
  tempG.setColor(Color.LIGHT_GRAY);  
  tempG.fill3DRect(300+15*j+2,50+15*i+2,15,15,true);  
  }  
  }  
   
  }  
   
  /*绘制出GameTable上面的下一个要运行的Diamond*/  
  public   void   drawNextDiamond(int   tableGridState)  
  {  
  for(int   i=0;i<4;i++)  
  for(int   j=0;j<4;j++)  
  {  
  if(tableGridState==1)  
  {  
  tempG.setColor(Color.ORANGE);  
  tempG.draw3DRect(88+j*15+2,20+15*i+2,15,15,true);  
  }  
  else   if(tableGridState==0)  
  {  
  tempG.setColor(Color.LIGHT_GRAY);  
  tempG.draw3DRect(88+j*15+2,20+15*i+2,15,15,true);  
  }  
  }  
   
   
  }  
   
  /*按了开始的按钮的时候,程序就在这里的到执行*/  
  public   void   actionPerformed(ActionEvent   e)  
  {  
  /*测试是否能正常工作*/  
  //JOptionPane.showConfirmDialog(null,   "choose   one",   "choose   one",   JOptionPane.YES_NO_OPTION);  
          if(e.getSource()==startBtn)  
          {  
          tempBtn=(JButton)e.getSource();  
          if(tempBtn.getText()=="start")  
          {  
          startBtn.setText("pause");  
          speedBox.setEditable(false);  
          mainGame.refreshThread.resume();  
          }  
          else   if(tempBtn.getText()=="pause")  
          {  
          startBtn.setText("start");  
          speedBox.setEditable(false);  
          mainGame.refreshThread.suspend();  
          }  
           
          }  
          else   if(e.getSource()==reStartBtn)  
          {  
           
          }  
   
         
  }  
  public   void   keyPressed(KeyEvent   e)  
  {  
  JOptionPane.showConfirmDialog(null,   "choose   twwwww",   "choose   twwwww",   JOptionPane.YES_NO_OPTION);  
  switch(e.getKeyCode())  
  {  
  case   KeyEvent.VK_LEFT:diamond.leftMove();break;  
  case   KeyEvent.VK_RIGHT:diamond.rightMove();break;  
  case   KeyEvent.VK_DOWN:JOptionPane.showConfirmDialog(null,   "choose   1",   "choose   1",   JOptionPane.YES_NO_OPTION);break;  
  }  
   
  }  
  public   void   keyReleased(KeyEvent   e)  
  {  
  //null  
  }  
  public   void   keyTyped(KeyEvent   e)  
  {  
  //null  
  }  
   
  public   void   itemStateChanged(ItemEvent   e)  
  {  
  JOptionPane.showConfirmDialog(null,   "choose   one",   "choose   one",   JOptionPane.YES_NO_OPTION);  
  }  
   
   
   
  }  
  Top

5 楼lizi02(冬虫夏草)回复于 2005-12-09 09:34:05 得分 0

太长了   本来不准备贴上来的Top

6 楼lizi02(冬虫夏草)回复于 2005-12-09 09:47:01 得分 0

呵呵   问题解决,可惜不能给我自己加分  
  csdn程序做的还不够人性化.Top

7 楼ASPserver(即便你从不绽放,淹没在花团似锦的芳香,她也会千百度中寻至你气息,只蓦然回首间,只回首间的一眼,你便知)回复于 2005-12-09 10:07:49 得分 9

顶帖也可以给分啊Top

相关问题

  • SWING事件监听问题
  • 求教:关于javax.swing.JList的事件监听
  • 如何监听jtree的点击事件
  • 请问actionlistener监听哪些事件?
  • 怎么限制事件的监听者?
  • 关于事件监听的问题
  • HttpSessionBinding session监听不到事件
  • 如何监听这个事件?给点源代码最好!
  • 是不是applet不能实现事件监听器接口啊?
  • 如何监听JTextField的失去焦点事件?

关键词

  • 监听
  • 键盘
  • swing
  • itemlistener
  • jcombobox
  • 面板
  • 方法
  • 时候
  • javax
  • import

得分解答快速导航

  • 帖主:lizi02
  • freego1026
  • Albert_1030
  • ASPserver

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo