📄 computer.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class computer extends JFrame implements ActionListener{
JButton off=new JButton("OFF");
JButton back=new JButton("<<-");
JButton on=new JButton("ON");
JButton add=new JButton("+");
JButton _7=new JButton("7");
JButton _8=new JButton("8");
JButton _9=new JButton("9");
JButton dec=new JButton("-");
JButton _4=new JButton("4");
JButton _5=new JButton("5");
JButton _6=new JButton("6");
JButton mul=new JButton("*");
JButton _1=new JButton("1");
JButton _2=new JButton("2");
JButton _3=new JButton("3");
JButton div=new JButton("/");
JButton _0=new JButton("0");
JButton point=new JButton(".");
JButton convert=new JButton("+/-");
JButton amo=new JButton("=");
boolean isOffed=false;
JTextField t1 = new JTextField(20);
String m,I="0",J="0";
int act=0;
double d,i,j;
char cum;
public computer() {
JFrame f = new JFrame();
//addKeyListener(this);
Container contentPane = f.getContentPane();
contentPane.setLayout(new BorderLayout());
f.setSize(240,210);
f.setTitle("计算器: Pier");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
t1.setHorizontalAlignment(JTextField.RIGHT);
off.addActionListener(this);
back.addActionListener(this);
on.addActionListener(this);
add.addActionListener(this);
_7.addActionListener(this);
_8.addActionListener(this);
_9.addActionListener(this);
dec.addActionListener(this);
_4.addActionListener(this);
_5.addActionListener(this);
_6.addActionListener(this);
mul.addActionListener(this);
_1.addActionListener(this);
_2.addActionListener(this);
_3.addActionListener(this);
div.addActionListener(this);
_0.addActionListener(this);
point.addActionListener(this);
convert.addActionListener(this);
amo.addActionListener(this);
Action k1=new KAction(_1);
Action k2=new KAction(_2);
Action k3=new KAction(_3);
Action k4=new KAction(_4);
Action k5=new KAction(_5);
Action k6=new KAction(_6);
Action k7=new KAction(_7);
Action k8=new KAction(_8);
Action k9=new KAction(_9);
Action k0=new KAction(_0);
Action kAdd=new KAction(add);
Action kMul=new KAction(mul);
Action kDiv=new KAction(div);
Action kDec=new KAction(dec);
Action kpt=new KAction(point);
Action kcount=new KAction(amo);
Action kBack=new KAction(back);
//Action k1=new ColorAction(_1);
// Action k1=new ColorAction(_1);
// Action k1=new ColorAction(_1);
p2.setLayout(new FlowLayout());
p1.setLayout(new GridLayout(5,4));
p2.add(t1);
p1.add(off);p1.add(back,(kBack));p1.add(on);p1.add(add,(kAdd));
p1.add(_7,(k7));p1.add(_8,(k8));p1.add(_9,(k9));p1.add(dec,(kDec));
p1.add(_4,(k4));p1.add(_5,(k5));p1.add(_6,(k6));p1.add(mul,(kMul));
p1.add(_1,(k1));p1.add(_2,(k2));p1.add(_3,(k3));p1.add(div,(kDiv));
p1.add(_0);p1.add(point,(kpt));p1.add(convert);p1.add(amo,(kcount));
t1.setText("0");
t1.setEditable(false);
contentPane.add("North",p2);
contentPane.add("South",p1);
//_1.setFocusable(true);
//pack();
//InputMap imap = getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
f.setVisible(true);
p1.grabFocus();
InputMap imap = p1.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
//KeyStroke.getKeyStroke(KeyEvent.KEY_LOCATION_NUMPAD,0);
imap.put(KeyStroke.getKeyStroke("typed 0"), "0");
imap.put(KeyStroke.getKeyStroke("typed 1"), "1");
imap.put(KeyStroke.getKeyStroke("typed 2"), "2");
imap.put(KeyStroke.getKeyStroke("typed 3"), "3");
imap.put(KeyStroke.getKeyStroke("typed 4"), "4");
imap.put(KeyStroke.getKeyStroke("typed 5"), "5");
imap.put(KeyStroke.getKeyStroke("typed 6"), "6");
imap.put(KeyStroke.getKeyStroke("typed 7"), "7");
imap.put(KeyStroke.getKeyStroke("typed 8"), "8");
imap.put(KeyStroke.getKeyStroke("typed 9"), "9");
imap.put(KeyStroke.getKeyStroke("typed +"), "+");
imap.put(KeyStroke.getKeyStroke("typed -"), "-");
imap.put(KeyStroke.getKeyStroke("typed /"), "/");
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MULTIPLY, 0), "*");
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "=");
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), "<<-");
imap.put(KeyStroke.getKeyStroke("typed ."), ".");
//imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_NUMPAD1, 0), "down");
//imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_NUMPAD1, 0), "down");
ActionMap amap = p1.getActionMap();
amap.put("0", k0);amap.put("1", k1);amap.put("2", k2);
amap.put("3", k3);amap.put("4", k4);amap.put("5", k5);
amap.put("6", k6);amap.put("7", k7);amap.put("8", k8);
amap.put("9", k9);amap.put("+", kAdd);amap.put("-", kDec);
amap.put("/", kDiv);amap.put("*", kMul);amap.put("=", kcount);
amap.put("<<-", kBack);amap.put(".", kpt);/*amap.put("down", k1);
amap.put("down", k1);amap.put("down", k1); */
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public class KAction extends AbstractAction
{
public KAction(JButton b)
{
}
public void actionPerformed(ActionEvent e)
{
//computer c=new computer();
//int i = Integer.parseInt(e.getActionCommand());
String s=e.getActionCommand();
//System.out.print(s.hashCode());
int i=s.hashCode();
switch(i)
{
case 48: _0.doClick();break;
case 49: _1.doClick();break;
case 50: _2.doClick();break;
case 51: _3.doClick();break;
case 52: _4.doClick();break;
case 53: _5.doClick();break;
case 54: _6.doClick();break;
case 55: _7.doClick();break;
case 56: _8.doClick();break;
case 57: _9.doClick();break;
case 43: add.doClick();break;
case 45: dec.doClick();break;
case 42: mul.doClick();break;
case 47: div.doClick();break;
case 10: amo.doClick();break;
case 8: back.doClick();break;
/* case 48: _0.doClick();break;
case 48: _0.doClick();break;
*/
}
}
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if(e.getSource()==_0||e.getSource()==_1||e.getSource()==_2||
e.getSource()==_3||e.getSource()==_4||e.getSource()==_5||
e.getSource()==_6||e.getSource()==_7||e.getSource()==_8||
e.getSource()==_9)
{
if (act==0){
m=t1.getText();
if (m.startsWith("0"))
{
t1.setText(e.getActionCommand());
}
else{
t1.setText(m+e.getActionCommand());
}
if(m.startsWith("0."))
{
t1.setText(m+e.getActionCommand());
}
}
if(act==1) {
t1.setText("");
t1.setText(t1.getText()+e.getActionCommand());
act=0;
}
}
if (s.equals("OFF")){
isOffed=true;
t1.setVisible(false);
}
if (s.equals("<<-")){
m=t1.getText();
if(m.startsWith("0"))
t1.setText("0");
if(m.length()==1)
t1.setText("0");
if(m.length()>1)
t1.setText(m.substring(0,m.length()-1));
}
if (s.equals("ON")){
if(isOffed==true){
isOffed=false;
t1.setVisible(true);
t1.setText("0");
}
else{
t1.setText("0");
}
}
if (e.getSource()==add||e.getSource()==dec
||e.getSource()==mul||e.getSource()==div){
cum=e.getActionCommand().charAt(0);
I=t1.getText();
t1.setText("");
}
if (s.equals(".")){//System.out.print(t1.getText().indexOf('.'));
if(t1.getText().indexOf('.')==-1)
t1.setText(t1.getText()+e.getActionCommand());
}
if (s.equals("+/-")){
d=Double.parseDouble(t1.getText());
d=-d;
t1.setText(d+"");
}
if (s.equals("=")){
J=t1.getText();
i=Double.parseDouble(I);
j=Double.parseDouble(J);
switch(cum)
{
case '+': {t1.setText(Double.toString(i+j));break; }
case '-': {t1.setText(Double.toString(i-j));break; }
case '*': {t1.setText(Double.toString(i*j));break; }
case '/': {t1.setText(Double.toString(i/j));break; }
}
act=1;
}
}
public static void main(String[] args) {
computer con = new computer();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -