Please add keyboard focus events to swing calculator. Its very argent.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

A frame with a calculator panel.

*/

class CalculatorFrame1 extends JFrame

{

private static final long serialVersionUID=0;

public CalculatorFrame1()

{

setTitle("Calculator");

Container contentPane = getContentPane();

CalculatorPanel panel = new CalculatorPanel();

contentPane.add(panel);

pack();

setVisible(true);

}

public static void main(String[] args)

{

CalculatorFrame1 frame = new CalculatorFrame1();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//frame.show();

}

}

/**

A panel with calculator buttons and a result display.

*/

class CalculatorPanel extends JPanel implements KeyListener

{

private static final long serialVersionUID=0;

private JTextField display;

private JPanel panel;

private double result;

private String lastCommand;

private boolean start;

public CalculatorPanel()

{

setLayout(new BorderLayout());

result = 0;

lastCommand = "=";

start = true;

// add the display

display = new JTextField("");

// display.addKeyListener(this);

// display.addKeyListener(this);

add(display, BorderLayout.NORTH);

display.setFocusable(true);

ActionListener insert = new InsertAction();

ActionListener command = new CommandAction();

// add the buttons in a 4 x 4 grid

panel = new JPanel();

panel.setLayout(new GridLayout(5, 4));

addButton("7", insert);

addButton("8", insert);

addButton("9", insert);

addButton("/", command);

addButton("4", insert);

addButton("5", insert);

addButton("6", insert);

addButton("*", command);

addButton("1", insert);

addButton("2", insert);

addButton("3", insert);

addButton("-", command);

addButton("0", insert);

addButton(".", insert);

addButton("=", command);

addButton("+", command);

addButton("Clear", command);

add(panel, BorderLayout.CENTER);

//this.addKeyListener(this);

}

/**

Adds a button to the center panel.

@param label the button label

@param listener the button listener

*/

private void addButton(String label, ActionListener listener)

{

JButton button = new JButton(label);

button.addActionListener(listener);

panel.add(button);

}

/**

This action inserts the button action string to the

end of the display text.

*/

private class InsertAction implements ActionListener

{

public void actionPerformed(ActionEvent event)

{

String input = event.getActionCommand();

if (start)

{

display.setText("");

start = false;

}

display.setText(display.getText() + input);

}

}

/**

This action executes the command that the button

action string denotes.

*/

private class CommandAction implements ActionListener

{

public void actionPerformed(ActionEvent evt)

{

String command = evt.getActionCommand();

// System.out.println("The value clear"+command);

if (command.equals("Clear"))

{

display.setText("");

start = false;

}

else

{

if (start)

{

if (command.equals("-"))

{

display.setText(command);

start = false;

}

else

lastCommand = command;

}

else

{

calculate(Double.parseDouble(display.getText()));

lastCommand = command;

start = true;

}

}

}

}

/**

Carries out the pending calculation.

@param x the value to be accumulated with the prior result.

*/

public void calculate(double x)

{

if (lastCommand.equals("+")) result += x;

else if (lastCommand.equals("-")) result -= x;

else if (lastCommand.equals("*")) result *= x;

else if (lastCommand.equals("/")) result /= x;

else if (lastCommand.equals("=")) result = x;

display.setText("" + result);

}

public void keyTyped(KeyEvent e) {

//You should only rely on the key char if the event

//is a key typed event.

int id = e.getID();

String keyString="";

System.out.println("The value KeyEvent.KEY_TYPED"+KeyEvent.KEY_TYPED);

if (id == KeyEvent.KEY_TYPED) {

char c = e.getKeyChar();

//System.out.println("The value c"+c);

if(c=='*' || c=='/' || c=='-'||c=='+' || c=='=')

{

start = true;

}

else

{

start = false;

keyString = display.getText()+ c ;

System.out.println("The value keyString"+keyString);

}

}

else {

calculate(Double.parseDouble(display.getText()));

start = true;

}

display.setText(keyString);

}

public void keyPressed(KeyEvent e) {

//You should only rely on the key char if the event

//is a key typed event.

/**

String keyString;

int id = e.getID();

if (id == KeyEvent.KEY_TYPED) {

char c = e.getKeyChar();

keyString = "key character = '" + c + "'";

} else {

int keyCode = e.getKeyCode();

keyString = "key code = " + keyCode

+ " ("

+ KeyEvent.getKeyText(keyCode)

+ ")";

}

display.setText("keyPressed:::"+keyString);**/

}

public void keyReleased(KeyEvent e) {

//You should only rely on the key char if the event

//is a key typed event.

/**

String keyString;

int id = e.getID();

if (id == KeyEvent.KEY_TYPED) {

char c = e.getKeyChar();

keyString = "key character = '" + c + "'";

} else {

int keyCode = e.getKeyCode();

keyString = "key code = " + keyCode

+ " ("

+ KeyEvent.getKeyText(keyCode)

+ ")";

}

display.setText("keyReleased:::"+keyString);**/

}

}

[6119 byte] By [cvxzcx_dsfafd98398123940890a] at [2007-11-26 18:20:49]
# 1
Check out the KeyboardFocusManager.You should add a listener to that
tjacobs01a at 2007-7-9 5:54:38 > top of Java-index,Desktop,Core GUI APIs...
# 2

Please state why the question is urgent?

You where given a suggestion 7 minutes after you posted the question, yet it has been over 2 hours and you have not yet responded indicating whether the suggest helped or not.

So I gues its really not the urgent after all and therefore I will ignore the question.

By the way, learn how to use the "Code Formatting Tags" when you post code, so the code you post is actually readable.

camickra at 2007-7-9 5:54:38 > top of Java-index,Desktop,Core GUI APIs...