`
yhman
  • 浏览: 12374 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Swing 小鍵盤

阅读更多
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;

import javax.swing.FocusManager;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.border.SoftBevelBorder;

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Font;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;

public class KeyboardFrame extends JFrame implements ActionListener,
		FocusListener {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanel = null;
	private JPanel jPanel1 = null;
	private JButton jButton = null;
	private JTextField jTextField = null;
	private JTextField jTextField1 = null;
	private JTextField jTextField2 = null;
	private JTextField jTextField3 = null;
	private JPanel jPanel2 = null;
	boolean flag = true;

	private JButton[] keyboardButton;

	/**
	 * This method initializes jPanel
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.setBounds(new Rectangle(0, 0, 795, 518));
			jPanel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			jPanel.add(getJTextField(), null);
			jPanel.add(getJTextField1(), null);
			jPanel.add(getJTextField2(), null);
			jPanel.add(getJTextField3(), null);

		}
		return jPanel;
	}

	/**
	 * This method initializes jPanel1
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.setBounds(new Rectangle(0, 518, 795, 50));
			jPanel1.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			jPanel1.setBackground(Color.lightGray);
			jPanel1.add(getJButton(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(335, 16, 89, 27));
			jButton.setText("Close");
		}
		return jButton;
	}

	/**
	 * This method initializes jTextField
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(60, 46, 285, 29));
		}
		return jTextField;
	}

	/**
	 * This method initializes jTextField1
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField1() {
		if (jTextField1 == null) {
			jTextField1 = new JTextField();
			jTextField1.setBounds(new Rectangle(59, 195, 286, 33));
		}
		return jTextField1;
	}

	/**
	 * This method initializes jTextField2
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField2() {
		if (jTextField2 == null) {
			jTextField2 = new JTextField();
			jTextField2.setBounds(new Rectangle(60, 465, 287, 30));
		}
		return jTextField2;
	}

	/**
	 * This method initializes jTextField3
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField3() {
		if (jTextField3 == null) {
			jTextField3 = new JTextField();
			jTextField3.setBounds(new Rectangle(59, 330, 286, 33));
		}
		return jTextField3;
	}

	/**
	 * This method initializes jPanel2
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			GridLayout gridLayout = new GridLayout();
			gridLayout.setRows(4);
			gridLayout.setColumns(10);
			gridLayout.setVgap(2);
			gridLayout.setHgap(2);
			jPanel2 = new JPanel();
			jPanel2.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			jPanel2.setFont(new Font("Dialog", Font.BOLD, 12));
			jPanel2.setLayout(gridLayout);
			jPanel2.setBounds(new Rectangle(5, 611, 780, 150));

			keyboardButton = new JButton[50];
			int buttonNumber = 0;
			for (int i = 49; i < 58; i++) {
				createButtonInPanel(buttonNumber, "" + (char) i);
				buttonNumber++;
			}
			createButtonInPanel(buttonNumber, "0");
			buttonNumber++;
			for (int i = 97; i < 123; i++) {
				createButtonInPanel(buttonNumber, "" + (char) i);
				buttonNumber++;
			}
		
			createButtonInPanel(buttonNumber++, "OK");
			createButtonInPanel(buttonNumber++, "CHANGE");

			createButtonInPanel(buttonNumber++, "SHIT");
			createButtonInPanel(buttonNumber++, "BACKSPACE");

		}
		return jPanel2;
	}

	/**
	 * ������д���һ��ť
	 * 
	 * @param buttonNumber
	 * @param buttonText
	 */
	private void createButtonInPanel(int buttonNumber, String buttonText) {
		JButton button = new JButton(buttonText);
		keyboardButton[buttonNumber] = button;
		button.setFocusable(false);
		button.addActionListener(this);
		button.setBackground(Color.LIGHT_GRAY);
		jPanel2.add(button);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				KeyboardFrame thisClass = new KeyboardFrame();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.jTextField.addFocusListener(thisClass);
				thisClass.jTextField1.addFocusListener(thisClass);
				thisClass.jTextField2.addFocusListener(thisClass);
				thisClass.jTextField3.addFocusListener(thisClass);

				// for (int i = 0; i < thisClass.keyboardButton.length; i++) {
				// JButton button = (JButton) thisClass.keyboardButton[i];
				// button.addActionListener(thisClass);
				// }

				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public KeyboardFrame() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setContentPane(getJContentPane());

		JPanel glass = (JPanel) this.getGlassPane();
		glass.setLayout(null);
		glass.add(getJPanel2());
		glass.setVisible(true);

		this.setTitle("JFrame");
		this.setBounds(new Rectangle(0, 0, 800, 600));
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJPanel(), null);
			jContentPane.add(getJPanel1(), null);
			// jContentPane.add(getJPanel2(), null);
		}

		return jContentPane;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Component component = FocusManager.getCurrentManager().getFocusOwner();
		JButton jbutton = (JButton) e.getSource();
		try {
			Robot r = new Robot();

			if (jbutton.getText().toUpperCase().equals("1")) {
				r.keyPress(KeyEvent.VK_1);
				r.keyRelease(KeyEvent.VK_1);
			} else if (jbutton.getText().toUpperCase().equals("2")) {
				r.keyPress(KeyEvent.VK_2);
				r.keyRelease(KeyEvent.VK_2);
			} else if (jbutton.getText().toUpperCase().equals("3")) {
				r.keyPress(KeyEvent.VK_3);
				r.keyRelease(KeyEvent.VK_3);
			} else if (jbutton.getText().toUpperCase().equals("4")) {
				r.keyPress(KeyEvent.VK_4);
				r.keyRelease(KeyEvent.VK_4);
			} else if (jbutton.getText().toUpperCase().equals("5")) {
				r.keyPress(KeyEvent.VK_5);
				r.keyRelease(KeyEvent.VK_5);
			} else if (jbutton.getText().toUpperCase().equals("6")) {
				r.keyPress(KeyEvent.VK_6);
				r.keyRelease(KeyEvent.VK_6);
			} else if (jbutton.getText().toUpperCase().equals("7")) {
				r.keyPress(KeyEvent.VK_7);
				r.keyRelease(KeyEvent.VK_7);
			} else if (jbutton.getText().toUpperCase().equals("8")) {
				r.keyPress(KeyEvent.VK_8);
				r.keyRelease(KeyEvent.VK_8);
			} else if (jbutton.getText().toUpperCase().equals("9")) {
				r.keyPress(KeyEvent.VK_9);
				r.keyRelease(KeyEvent.VK_9);
			} else if (jbutton.getText().toUpperCase().equals("0")) {
				r.keyPress(KeyEvent.VK_0);
				r.keyRelease(KeyEvent.VK_0);
			} else if (jbutton.getText().toUpperCase().equals("A")) {
				r.keyPress(KeyEvent.VK_A);
				r.keyRelease(KeyEvent.VK_A);
			} else if (jbutton.getText().toUpperCase().equals("B")) {
				r.keyPress(KeyEvent.VK_B);
				r.keyRelease(KeyEvent.VK_B);
			} else if (jbutton.getText().toUpperCase().equals("C")) {
				r.keyPress(KeyEvent.VK_C);
				r.keyRelease(KeyEvent.VK_C);
			} else if (jbutton.getText().toUpperCase().equals("D")) {
				r.keyPress(KeyEvent.VK_D);
				r.keyRelease(KeyEvent.VK_D);
			} else if (jbutton.getText().toUpperCase().equals("E")) {
				r.keyPress(KeyEvent.VK_E);
				r.keyRelease(KeyEvent.VK_E);
			} else if (jbutton.getText().toUpperCase().equals("F")) {
				r.keyPress(KeyEvent.VK_F);
				r.keyRelease(KeyEvent.VK_F);
			} else if (jbutton.getText().toUpperCase().equals("G")) {
				r.keyPress(KeyEvent.VK_G);
				r.keyRelease(KeyEvent.VK_G);
			} else if (jbutton.getText().toUpperCase().equals("H")) {
				r.keyPress(KeyEvent.VK_H);
				r.keyRelease(KeyEvent.VK_H);
			} else if (jbutton.getText().toUpperCase().equals("I")) {
				r.keyPress(KeyEvent.VK_I);
				r.keyRelease(KeyEvent.VK_I);
			} else if (jbutton.getText().toUpperCase().equals("J")) {
				r.keyPress(KeyEvent.VK_J);
				r.keyRelease(KeyEvent.VK_J);
			} else if (jbutton.getText().toUpperCase().equals("K")) {
				r.keyPress(KeyEvent.VK_K);
				r.keyRelease(KeyEvent.VK_K);
			} else if (jbutton.getText().toUpperCase().equals("L")) {
				r.keyPress(KeyEvent.VK_L);
				r.keyRelease(KeyEvent.VK_L);
			} else if (jbutton.getText().toUpperCase().equals("M")) {
				r.keyPress(KeyEvent.VK_M);
				r.keyRelease(KeyEvent.VK_M);
			} else if (jbutton.getText().toUpperCase().equals("N")) {
				r.keyPress(KeyEvent.VK_N);
				r.keyRelease(KeyEvent.VK_N);
			} else if (jbutton.getText().toUpperCase().equals("O")) {
				r.keyPress(KeyEvent.VK_O);
				r.keyRelease(KeyEvent.VK_O);
			} else if (jbutton.getText().toUpperCase().equals("P")) {
				r.keyPress(KeyEvent.VK_P);
				r.keyRelease(KeyEvent.VK_P);
			} else if (jbutton.getText().toUpperCase().equals("Q")) {
				r.keyPress(KeyEvent.VK_Q);
				r.keyRelease(KeyEvent.VK_Q);
			} else if (jbutton.getText().toUpperCase().equals("R")) {
				r.keyPress(KeyEvent.VK_R);
				r.keyRelease(KeyEvent.VK_R);
			} else if (jbutton.getText().toUpperCase().equals("S")) {
				r.keyPress(KeyEvent.VK_S);
				r.keyRelease(KeyEvent.VK_S);
			} else if (jbutton.getText().toUpperCase().equals("T")) {
				r.keyPress(KeyEvent.VK_T);
				r.keyRelease(KeyEvent.VK_T);
			} else if (jbutton.getText().toUpperCase().equals("A")) {
				r.keyPress(KeyEvent.VK_A);
				r.keyRelease(KeyEvent.VK_A);
			} else if (jbutton.getText().toUpperCase().equals("U")) {
				r.keyPress(KeyEvent.VK_U);
				r.keyRelease(KeyEvent.VK_U);
			} else if (jbutton.getText().toUpperCase().equals("V")) {
				r.keyPress(KeyEvent.VK_V);
				r.keyRelease(KeyEvent.VK_V);
			} else if (jbutton.getText().toUpperCase().equals("W")) {
				r.keyPress(KeyEvent.VK_W);
				r.keyRelease(KeyEvent.VK_W);
			} else if (jbutton.getText().toUpperCase().equals("X")) {
				r.keyPress(KeyEvent.VK_X);
				r.keyRelease(KeyEvent.VK_X);
			} else if (jbutton.getText().toUpperCase().equals("Y")) {
				r.keyPress(KeyEvent.VK_Y);
				r.keyRelease(KeyEvent.VK_Y);
			} else if (jbutton.getText().toUpperCase().equals("Z")) {
				r.keyPress(KeyEvent.VK_Z);
				r.keyRelease(KeyEvent.VK_Z);
			} else if (jbutton.getText().toUpperCase().equals("OK")) {
				r.keyPress(KeyEvent.VK_TAB);
				r.keyRelease(KeyEvent.VK_TAB);
				// jPanel.setBounds(new Rectangle(0, 0, 795, 518));
				// jPanel2.setBounds(new Rectangle(5, 611, 780, 150));
			} else if (jbutton.getText().toUpperCase().equals("CHANGE")) {
				r.keyPress(KeyEvent.VK_ALT);
				r.keyPress(KeyEvent.VK_SHIFT);
				r.keyRelease(KeyEvent.VK_ALT);
				r.keyRelease(KeyEvent.VK_SHIFT);
			} else if (jbutton.getText().toUpperCase().equals("BACKSPACE")) {
				r.keyPress(KeyEvent.VK_BACK_SPACE);
				r.keyRelease(KeyEvent.VK_BACK_SPACE);

			} else if (jbutton.getText().toUpperCase().equals("SHIT")) {

				// if (!jbutton.isSelected()) {
				// r.keyRelease(KeyEvent.VK_SHIFT);
				// jbutton.setSelected(true);
				// jbutton.setBackground(Color.LIGHT_GRAY);
				// } else {
				// jbutton.setBackground(Color.DARK_GRAY);
				// jbutton.setSelected(false);
				// r.keyPress(KeyEvent.VK_SHIFT);
				// }
				if (flag) {
					keyboardButton[0].setText("!");
					keyboardButton[1].setText("@");
					keyboardButton[2].setText("#");
					keyboardButton[3].setText("$");
					keyboardButton[4].setText("%");
					keyboardButton[5].setText("^");
					keyboardButton[6].setText("&");
					keyboardButton[7].setText("*");
					keyboardButton[8].setText("(");
					keyboardButton[9].setText(")");

					for (int i = 10; i < 36; i++) {
						keyboardButton[i].setText(keyboardButton[i].getText()
								.toUpperCase());
					}

					r.keyPress(KeyEvent.VK_CAPS_LOCK);
					r.keyRelease(KeyEvent.VK_CAPS_LOCK);
					flag = false;
					// JOptionPane.showMessageDialog(null,
					// "注意:数字键已经切换到符号操作,字母已切换到大写!");
				} else {
					keyboardButton[0].setText("1");
					keyboardButton[1].setText("2");
					keyboardButton[2].setText("3");
					keyboardButton[3].setText("4");
					keyboardButton[4].setText("5");
					keyboardButton[5].setText("6");
					keyboardButton[6].setText("7");
					keyboardButton[7].setText("8");
					keyboardButton[8].setText("9");
					keyboardButton[9].setText("0");
					for (int i = 10; i < 36; i++) {
						keyboardButton[i].setText(keyboardButton[i].getText()
								.toLowerCase());
					}
					r.keyPress(KeyEvent.VK_CAPS_LOCK);
					r.keyRelease(KeyEvent.VK_CAPS_LOCK);
					// JOptionPane.showMessageDialog(null,
					// "注意:数字键已经切换到数字操作,字母已切换到小写!");
					flag = true;
				}

			}

			else {
				if (component instanceof JTextField) {
					JTextField jtextField = (JTextField) component;
					jtextField
							.setText(jtextField.getText() + jbutton.getText());
				}
			}
		} catch (AWTException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	@Override
	public void focusGained(FocusEvent e) {
		int yFocus = FocusManager.getCurrentManager().getFocusOwner().getY();
		int heightFocus = FocusManager.getCurrentManager().getFocusOwner()
				.getHeight();
		int yKeyBoard = 365;

		System.out.println("-----" + yFocus);
		if (yFocus > yKeyBoard) {
			jPanel.setBounds(new Rectangle(0, yKeyBoard - yFocus - heightFocus,
					795, 518));
		}
		jPanel2.setBounds(new Rectangle(5, yKeyBoard, 780, 150));
	}

	@Override
	public void focusLost(FocusEvent e) {
		jPanel.setBounds(new Rectangle(0, 0, 795, 518));
		jPanel2.setBounds(new Rectangle(5, 611, 780, 150));
	}

} // @jve:decl-index=0:visual-constraint="10,10"
分享到:
评论
1 楼 zjx6820 2010-11-01  
不错啊 

相关推荐

    java swing模拟键盘

    在Java Swing中模拟键盘的功能,主要是为了在没有物理键盘的设备上,如触摸屏设备,提供输入文本的方式。例如,对于描述中提到的"Ipad键盘",可能是指在Java应用中创建一个虚拟键盘,让用户在iPad或其他类似设备上...

    了解Swing中的键盘事件处理

    ### Swing中的键盘事件处理 #### 一、键盘事件概述 在Java Swing开发中,键盘事件处理是一项非常重要的功能,能够显著提升用户界面的交互性和可用性。本文将深入探讨Swing框架中处理键盘事件的不同机制,并详细...

    swing keyboard-master

    "swing keyboard-master"项目是一个基于Swing实现的软键盘应用,特别适合于那些需要在无物理键盘环境下输入字符的情况,例如触摸屏设备或网络安全考虑的场合。 这个项目的核心是利用Swing的组件和事件处理机制来...

    JavaSwing小程序

    Java Swing小程序是Java编程领域中用于构建桌面应用用户界面的一种工具包。它是Java Foundation Classes (JFC) 的一部分,提供了一套丰富的组件和接口,使得开发者可以通过图形化的方式来设计和构建应用程序的界面。...

    JavaSwing贪吃蛇小游戏

    Java Swing贪吃蛇小游戏是一个利用Java的Swing库开发的经典娱乐项目,旨在帮助开发者加深对Swing组件和事件处理机制的理解。Swing是Java Standard Edition (J2SE)的一部分,提供了一组轻量级的GUI组件,使得在Java中...

    基于JAVASwing的贪食蛇小游戏 键盘事件监听 多线程 文件IO 自取

    在本文中,我们将深入探讨如何使用Java Swing库创建一个经典的贪食蛇小游戏。这个项目不仅是一个有趣的学习实践,而且能够帮助初学者理解Java GUI编程、键盘事件监听、多线程以及文件I/O等核心概念。 首先,让我们...

    Java Swing 小游戏 迷宫

    在这个特定的项目中,“迷宫”小游戏是利用Java Swing开发的一个交互式应用,允许用户通过键盘输入来探索和解决迷宫问题。 在Swing中,键盘事件的处理通常涉及到键盘监听器(KeyListener)。键盘监听器接口有三个...

    swing教程 swing教程

    AWT(Abstract Window Toolkit)是 Java 的一个基础 GUI 工具包,但是 AWT 存在一些缺陷,例如缺少剪贴板、打印支持、键盘导航等特性。AWT 设计的初衷是支持开发小应用程序的简单用户界面,但是在实际应用中,AWT ...

    java swing 事件处理小项目(推箱子)

    这个小项目是基于事件处理机制的,这意味着用户与界面的交互(如点击、键盘输入等)会触发特定的程序逻辑。 首先,让我们了解Swing中的事件处理。在Swing中,事件处理主要涉及到三个关键组件:事件源(Event Source...

    javaswing教程 精通javaswing

    简单的 Swing 小部件 JLabel 是 Swing 库中最基础的组件。它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。它可以用作文本描述,也可以用作图片描述。 其他知识点: * Swing 的角色是充当用户和...

    JAVA Swing小游戏实例与代码

    在Java Swing中,我们可以使用JPanel自定义绘制游戏场景,通过KeyListener监听键盘事件来控制角色移动。同时,可以利用Timer类来实现游戏的定时更新,比如怪物的移动和碰撞检测。 2. **端口扫描器**: 端口扫描是...

    java小游戏_贪吃蛇_swing编程

    《基于Java Swing编程实现的贪吃蛇小游戏详解》 贪吃蛇是一款深受大家喜爱的经典小游戏,它简单易玩,挑战性十足。在这个项目中,我们将深入探讨如何使用Java的Swing库来实现这样一个趣味盎然的程序。Swing是Java...

    JAVA swing版2048小游戏

    Java Swing版2048小游戏是一款基于Java编程语言的桌面应用程序,它利用Swing库来构建用户界面。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,用于创建美观、交互性强的图形用户界面。这个...

    java swing 小游戏 俄罗斯方块

    【Java Swing小游戏:俄罗斯方块】 Java Swing是Java的一个组件库,用于构建桌面应用程序的用户界面。在这个场景中,我们讨论的是使用Java Swing实现的经典小游戏——俄罗斯方块。俄罗斯方块是一款流行的世界级益智...

    javaSwing万年历小程序

    在Java Swing中,我们可以创建丰富的交互式应用程序,包括我们所讨论的“javaSwing万年历小程序”。这个小程序旨在提供一个可视化界面,以月历的形式展示日期和星期,允许用户自定义年份,并通过下拉菜单选择月份。...

    javaswing 打飞机小游戏

    这个“javaswing 打飞机小游戏”是一个基于Java Swing开发的简单娱乐项目,它展示了如何利用Swing库创建一个交互式的游戏应用。 在Java Swing中,开发者可以使用各种组件(如JFrame、JPanel、JButton等)来构建用户...

    打字小游戏 java swing

    【标题】:“打字小游戏”是基于Java Swing开发的一款互动软件,旨在提高用户打字速度和准确性。通过游戏化的方式,使得学习打字变得更加有趣,同时也增强了用户对键盘布局的熟悉程度。 【描述】:这款打字小游戏...

    swing实现的仿qq截图小工具

    本项目是使用Swing实现的一个仿QQ截图小工具,它旨在提供类似QQ截图的功能,让用户在桌面环境中能够方便地进行屏幕截图并进行编辑。 首先,Swing组件库提供了丰富的组件,如JFrame、JButton、JPanel等,这些组件...

    JAVA swing中文离线API文档

    Java Swing是Java标准库中的一个组件集合,用于构建桌面应用程序用户界面。它是Java Foundation Classes (JFC)的一部分,提供了一套轻量级的GUI(图形用户界面)组件,支持丰富的交互功能。本离线API文档详细阐述了...

Global site tag (gtag.js) - Google Analytics