java键盘代码 java键盘输入语句讲解 | 您所在的位置:网站首页 › 键盘监听事件为啥会在Jpanel上失效 › java键盘代码 java键盘输入语句讲解 |
java中各种类型的键盘输入代码是什么
下面的是键盘和鼠标的各种事件,看一下是不是你要的! 鼠标监听器 鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如下表: 鼠标事件 处理方法 MOUSE_CLICKED MouseClicked (MouseEvent) 鼠标点击(单或双) MOUSE_PRESSED MousePressed (MouseEvent) 鼠标按下 MOUSE_RELEASED MouseReleased(MouseEvent) 鼠标松开 MOUSE_ENTERED MouseEntered (MouseEvent) 鼠标进入(某组件区域) MOUSE_EXITED MouseExited (MouseEvent) 鼠标离开(某组件区域) 鼠标事件MouseEvent常用方法 int getClickCount() 得到点击次数1 OR 2; int getX(), int getY() 得到鼠标的(象素)位置。 对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动事件: MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动 下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。 例2 下面是讨论MouseMotionListener的使用时机,它提供的下面的两个方法,可让你随时掌握鼠标的坐标,并处理拖曳鼠标的操作。 MouseMotionListener mouseDragged(MouseEvent e) mouseMoved(MouseEvent e) ----------------------------------------------------------------------- 下面的范例让你知道鼠标在JFrame上的坐标,并拖曳出直线来。 MouseDemo3.java import java.awt.*; import java.awt.event.*; import javax.swing.*; /*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener. */ public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{ int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged int x=0; int y=0; int startx,starty,endx,endy;//起始坐标与终点坐标 public MouseDemo3(){ Container contentPane=getContentPane(); contentPane.addMouseListener(this); contentPane.addMouseMotionListener(this); setSize(300,300); show(); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } } ); } /*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/ public void mousePressed(MouseEvent e){ startx=e.getX(); starty=e.getY(); } public void mouseReleased(MouseEvent e){ endx=e.getX(); endy=e.getY(); } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseClicked(MouseEvent e){ } /*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/ public void mouseMoved(MouseEvent e){ flag=1; x=e.getX(); y=e.getY(); repaint(); } public void mouseDragged(MouseEvent e){ flag=2; x=e.getX(); y=e.getY(); repaint(); } public void update(Graphics g){ g.setColor(this.getBackground()); g.fillRect(0,0,getWidth(),getHeight()); paint(g); } public void paint(Graphics g){ g.setColor(Color.black); if (flag==1){ g.drawString("鼠标坐标:("+x+","+y+";)",10,50); g.drawLine(startx,starty,endx,endy); } if (flag==2){ g.drawString("拖曳鼠标价坐标:("+x+","+y+";)",10,50); g.drawLine(startx,starty,x,y); } } public static void main(String[] args){ new MouseDemo3(); } } 例3 实现一个简单的鼠标控制程序MouseController。程序功能很简单:随机移动鼠标并点击左键。 代码如下: import java.awt.AWTException; import java.awt.Dimension; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.InputEvent; import java.util.Random; /** * */ /** * @Create date 2007-11-6 */ public class MouseController implements Runnable { private Dimension dim; private Random rand; private Robot robot; private volatile boolean stop = false; public MouseController() { dim = Toolkit.getDefaultToolkit().getScreenSize(); rand = new Random(); try { robot = new Robot(); } catch (AWTException ex) { ex.printStackTrace(); } } public void run() { while(!stop) { int x = rand.nextInt(dim.width); int y = rand.nextInt(dim.height); robot.mouseMove(x, y); robot.mousePress(InputEvent.BUTTON1_MASK); try { Thread.sleep(2000); } catch (InterruptedException ex) { ex.printStackTrace(); } } } public synchronized void stop() { stop = true; } public static void main(String[] args) { MouseController mc = new MouseController(); Thre $False$ ad mcThread = new Thread(mc); System.out.println("Mouse Controller start"); mcThread.start(); try { Thread.sleep(60000); } catch (InterruptedException ex) { ex.printStackTrace(); } mc.stop(); System.out.println("Mouse Controller stoped"); } } 例4 本例程演示鼠标监听器,鼠标点击和运动的监听。 /// // MouseEvt.java import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyPanel extends JPanel implements MouseMotionListener{ public MyPanel() { addMouseListener(new MouseAdapter() { publicvoid mouseClicked(MouseEvent evt) { if (evt.getClickCount() = 2) System.out.println("\n双击鼠标"); int x = evt.getX(); int y = evt.getY(); System.out.println("点击鼠标的位置\nX:" + x + "\ty: " + y); } }); addMouseMotionListener(this); } publicvoid mouseMoved(MouseEvent evt){ System.out.println("\n鼠标正在移动"); } publicvoid mouseDragged(MouseEvent evt){ System.out.println("\n鼠标正在拖动"); } } class MyFrame extends JFrame{ public MyFrame(){ setTitle("鼠标事件示例程序"); setSize(300, 200); addWindowListener(new WindowAdapter(){ publicvoid windowClosing(WindowEvent e){ System.exit(0); } } ); Container contentPane = getContentPane(); contentPane.add(new MyPanel()); } } publicclass MouseEvt{ publicstaticvoid main(String[] args){ JFrame frame = new MyFrame(); frame.setVisible(true); } } /// 简要说明 在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运动监听器来处理移动和拖放操作。 鼠标双击事件 鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如: public class MyMouseListener extends java.awt.event.MouseAdapter ...{ public void mouseClicked(MouseEvent e) ...{ System.out.println("clicked"); int clickTimes = e.getClickCount(); if (clickTimes == 2) ...{ System.out.println("Doublc Clicked!"); } } } 但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务. 下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响! public class MyMouseListener extends java.awt.event.MouseAdapter ...{ private static boolean flag=false;//用来判断是否已经执行双击事件 private static int clickNum=0;//用来判断是否该执行双击事件 public void mouseClicked(MouseEvent e) ...{ final MouseEvent me=e;//事件源 this.flag=false;//每次点击鼠标初始化双击事件执行标志为false if (this.clickNum == 1) ...{//当clickNum==1时执行双击事件 this.mouseDoubleClicked(me);//执行双击事件 this.clickNum=0;//初始化双击事件执行标志为0 this.flag=true;//双击事件已执行,事件标志为true return; } //定义定时器 java.util.Timer timer=new java.util.Timer(); //定时器开始执行,延时0.2秒后确定是否执行单击事件 timer.schedule(new java.util.TimerTask() ...{ private int n=0;//记录定时器执行次数 public void run() ...{ if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行 n=0; MyMouseListener.clickNum=0; this.cancel(); return; } if (n == 1) ...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件 mouseSingleClicked(me);//执行单击事件 MyMouseListener.flag = true; MyMouseListener.clickNum=0; n=0; this.cancel(); return; } clickNum++; n++; } },new java.util.Date(),500); } /** *//** * 鼠标单击事件 * @param e 事件源参数 */ public void mouseSingleClicked(MouseEvent e)...{ System.out.println("Single Clicked!"); } /** *//** * 鼠标双击事件 * @param e 事件源参数 */ public void mouseDoubleClicked(MouseEvent e)...{ System.out.println("Doublc Clicked!"); } } //Test.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test extends JFrame{ public Test(){ super("test"); init(); this.setSize(800,600); this.setVisible(true); } private void init(){ JButton b=new JButton("button"); b.setBounds(50,50,100,30); this.getContentPane().setLayout(null); this.getContentPane().add(b); b.addMouseListener(new MyMouseListener()); } public static void main(String args[]){ new Test(); } } 键盘监听器 键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。 键码 含义 键码 含义 VK_LEFT/VK_RIGHT 左右方向键 VK_CONTROL Ctrl键 VK_KP_UP 小键盘向上 VK_ATL Alt键 VK_PAUSE 暂停键 VK_SHIFT Shift键 VK_NUMBER0 小键盘数字0 VK_F1 功能键F1 VK_0 数字键0 VK_B 字母键B 虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。 监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。 除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。 下面的例子演示得到键码和字符的方法,在命令行上显示结果。 例1 本例程演示键盘监听器后键码的用法。 /// // KeyEvt.java import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyKeyListener implements KeyListener{ publicvoid keyPressed(KeyEvent evt) { System.out.println("\n按键被按下"); showKeyEventMsg(evt); } publicvoid keyReleased(KeyEvent evt){ } publicvoid keyTyped(KeyEvent evt) { } privatevoid showKeyEventMsg(KeyEvent evt){//显示按键事件信息 //得到按键对应的整型数 int code = evt.getKeyCode(); //返回按键事件所代表的字符 char c = evt.getKeyChar(); //得到代表按键的字符串 String szText = evt.getKeyText(code); if (code != KeyEvent.VK_UNDEFINED) System.out.println("\n按键对应的整型数:"+code); if (c != KeyEvent.CHAR_UNDEFINED) System.out.println("\n与按键相联系的字符:"+c); if (evt.isShiftDown()) System.out.println("\n按键Shift被按下"); System.out.println("\n按键本身的字符串:"+szText); } } class ButtonPanel extends JPanel{ public ButtonPanel() { //新建一个文本域组件 tf = new JTextField(20); add(tf); //指定用来处理该按钮事件的监听器对象为JPanel本身 myListener = new MyKeyListener(); tf.addKeyListener(myListener); } private JTextField tf; private MyKeyListener myListener; } class ButtonFrame extends JFrame{ public ButtonFrame() { setTitle("键盘事件示例程序"); setSize(300, 200); setLocation(100,100); addWindowListener(new WindowAdapter() { publicvoid windowClosing(WindowEvent e) { System.exit(0); } }); Container ctPane = getContentPane(); ctPane.add(new ButtonPanel()); } } publicclass KeyEvt{ publicstaticvoid main(String[] args) { JFrame frame = new ButtonFrame(); frame.setVisible(true); } } ///简要说明 程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。 在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel放到窗口ButtonFrame中。 java 键盘输入语句怎么写以下为代码: import java.util.*; Scannerin=newScanner(System.in); System.out.println("pleaseentera:"); doublea=in.nextDouble();//这是输入a System.out.println("Pleaseenterb:"); doubleb=in.nextDouble();//这是输入b doublec=a+b; System.out.println("Theresult:"+c);//输出结果。 扩展资料: 在windows下编译java文件、执行: 1、先创建一个txt,将其名称重命名为test.java。 2、编写代码,为输出为holloword。 3、找到cmd,并进行打开cmd。 4、编译java文件,输入命令为javactest.java。 5、如果没有报错,查看当前目录下是否有class文件产生。 6、执行class文件,在命令输入javatest,输出为holloword。 用JAVA代码从键盘输入一个正整数n,然后求1+2+3+…+n的结果并输出。import java.util.Scanner; public class Main{ public static void main (String[]args){ Scanner sc = new Scanner (System.in); System.out.print ("请输入一个正整数: "); int n = sc.nextInt (); int sum = 0; for (int i = 1; i = n; i++){ sum += i; } System.out.print (sum); } } |
CopyRight 2018-2019 实验室设备网 版权所有 |