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"
分享到:
相关推荐
在Java Swing中模拟键盘的功能,主要是为了在没有物理键盘的设备上,如触摸屏设备,提供输入文本的方式。例如,对于描述中提到的"Ipad键盘",可能是指在Java应用中创建一个虚拟键盘,让用户在iPad或其他类似设备上...
### Swing中的键盘事件处理 #### 一、键盘事件概述 在Java Swing开发中,键盘事件处理是一项非常重要的功能,能够显著提升用户界面的交互性和可用性。本文将深入探讨Swing框架中处理键盘事件的不同机制,并详细...
"swing keyboard-master"项目是一个基于Swing实现的软键盘应用,特别适合于那些需要在无物理键盘环境下输入字符的情况,例如触摸屏设备或网络安全考虑的场合。 这个项目的核心是利用Swing的组件和事件处理机制来...
Java Swing小程序是Java编程领域中用于构建桌面应用用户界面的一种工具包。它是Java Foundation Classes (JFC) 的一部分,提供了一套丰富的组件和接口,使得开发者可以通过图形化的方式来设计和构建应用程序的界面。...
Java Swing贪吃蛇小游戏是一个利用Java的Swing库开发的经典娱乐项目,旨在帮助开发者加深对Swing组件和事件处理机制的理解。Swing是Java Standard Edition (J2SE)的一部分,提供了一组轻量级的GUI组件,使得在Java中...
在本文中,我们将深入探讨如何使用Java Swing库创建一个经典的贪食蛇小游戏。这个项目不仅是一个有趣的学习实践,而且能够帮助初学者理解Java GUI编程、键盘事件监听、多线程以及文件I/O等核心概念。 首先,让我们...
在这个特定的项目中,“迷宫”小游戏是利用Java Swing开发的一个交互式应用,允许用户通过键盘输入来探索和解决迷宫问题。 在Swing中,键盘事件的处理通常涉及到键盘监听器(KeyListener)。键盘监听器接口有三个...
AWT(Abstract Window Toolkit)是 Java 的一个基础 GUI 工具包,但是 AWT 存在一些缺陷,例如缺少剪贴板、打印支持、键盘导航等特性。AWT 设计的初衷是支持开发小应用程序的简单用户界面,但是在实际应用中,AWT ...
这个小项目是基于事件处理机制的,这意味着用户与界面的交互(如点击、键盘输入等)会触发特定的程序逻辑。 首先,让我们了解Swing中的事件处理。在Swing中,事件处理主要涉及到三个关键组件:事件源(Event Source...
简单的 Swing 小部件 JLabel 是 Swing 库中最基础的组件。它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。它可以用作文本描述,也可以用作图片描述。 其他知识点: * Swing 的角色是充当用户和...
在Java Swing中,我们可以使用JPanel自定义绘制游戏场景,通过KeyListener监听键盘事件来控制角色移动。同时,可以利用Timer类来实现游戏的定时更新,比如怪物的移动和碰撞检测。 2. **端口扫描器**: 端口扫描是...
《基于Java Swing编程实现的贪吃蛇小游戏详解》 贪吃蛇是一款深受大家喜爱的经典小游戏,它简单易玩,挑战性十足。在这个项目中,我们将深入探讨如何使用Java的Swing库来实现这样一个趣味盎然的程序。Swing是Java...
Java Swing版2048小游戏是一款基于Java编程语言的桌面应用程序,它利用Swing库来构建用户界面。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,用于创建美观、交互性强的图形用户界面。这个...
【Java Swing小游戏:俄罗斯方块】 Java Swing是Java的一个组件库,用于构建桌面应用程序的用户界面。在这个场景中,我们讨论的是使用Java Swing实现的经典小游戏——俄罗斯方块。俄罗斯方块是一款流行的世界级益智...
在Java Swing中,我们可以创建丰富的交互式应用程序,包括我们所讨论的“javaSwing万年历小程序”。这个小程序旨在提供一个可视化界面,以月历的形式展示日期和星期,允许用户自定义年份,并通过下拉菜单选择月份。...
这个“javaswing 打飞机小游戏”是一个基于Java Swing开发的简单娱乐项目,它展示了如何利用Swing库创建一个交互式的游戏应用。 在Java Swing中,开发者可以使用各种组件(如JFrame、JPanel、JButton等)来构建用户...
【标题】:“打字小游戏”是基于Java Swing开发的一款互动软件,旨在提高用户打字速度和准确性。通过游戏化的方式,使得学习打字变得更加有趣,同时也增强了用户对键盘布局的熟悉程度。 【描述】:这款打字小游戏...
本项目是使用Swing实现的一个仿QQ截图小工具,它旨在提供类似QQ截图的功能,让用户在桌面环境中能够方便地进行屏幕截图并进行编辑。 首先,Swing组件库提供了丰富的组件,如JFrame、JButton、JPanel等,这些组件...
Java Swing是Java标准库中的一个组件集合,用于构建桌面应用程序用户界面。它是Java Foundation Classes (JFC)的一部分,提供了一套轻量级的GUI(图形用户界面)组件,支持丰富的交互功能。本离线API文档详细阐述了...