📄 file2.txt
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class computor
{
private JFrame jf = null;
private JButton jbadd, jbsub, jbmutil, jbdiv, jbequal, jbdot, jbcr;
private JTextField jexpression;
private JButton jb[] = new JButton[10];
private Font newfnt;
private Font oldfnt;
public computor(){
newfnt = new Font(null, Font.BOLD, 30);
jexpression = new JTextField("");
jexpression.setHorizontalAlignment(JTextField.RIGHT);
for(int index=0; index<10; index++)
{
jb[index] = new JButton(index+"");
jb[index].addActionListener(new ExpressionButtonHandler());
jb[index].addMouseListener(new EnterOutHandle());
}
oldfnt = jb[0].getFont();
jbequal = new JButton("=");
jbequal.addActionListener(new ResultButtonHandler());
//jbequal.setFont(fnt);
jbdot = new JButton(".");
jbdot.addActionListener(new ExpressionButtonHandler());
//jbdot.setFont(fnt);
jbadd = new JButton("+");
jbadd.addActionListener(new ExpressionButtonHandler());
//jbadd.setFont(fnt);
jbsub = new JButton("-");
jbsub.addActionListener(new ExpressionButtonHandler());
//jbsub.setFont(fnt);
jbmutil = new JButton("*");
jbmutil.addActionListener(new ExpressionButtonHandler());
//jbmutil.setFont(fnt);
jbdiv = new JButton("/");
jbdiv.addActionListener(new ExpressionButtonHandler());
//jbdiv.setFont(fnt);
jbcr = new JButton("CR");
jbcr.addActionListener(new CRButtonHandler());
//jbcr.setFont(fnt);
/////////////////////////////////////////////////////////////////////
jf = new JFrame();
jf.setTitle("Swing计算器");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(400, 200);
jf.setLocation(100, 200);
jf.setLayout(new BorderLayout()); //总体布局
JPanel jptop = new JPanel(new GridLayout(1,2));
jptop.add(jexpression);
jptop.add(jbcr);
JPanel jpdown = new JPanel(new GridLayout(4,4));
jpdown.add(jb[1]);
jpdown.add(jb[2]);
jpdown.add(jb[3]);
jpdown.add(jbadd);
jpdown.add(jb[4]);
jpdown.add(jb[5]);
jpdown.add(jb[6]);
jpdown.add(jbsub);
jpdown.add(jb[7]);
jpdown.add(jb[8]);
jpdown.add(jb[9]);
jpdown.add(jbmutil);
jpdown.add(jbdot);
jpdown.add(jb[0]);
jpdown.add(jbequal);
jpdown.add(jbdiv);
Container ca = jf.getContentPane();
ca.add(jptop, BorderLayout.NORTH);
ca.add(jpdown, BorderLayout.CENTER);
jf.show();
}
//定义事件处理类
private class ExpressionButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton jbut = (JButton)e.getSource();
String exp = jexpression.getText();
exp = exp + jbut.getText();
jexpression.setText(exp);
}
}
//定义事件处理类
private class CRButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jexpression.setText("");
}
}
/*
public class EnterOutHandle implements MouseListener
{
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
JButton jbsource = (JButton)e.getSource();
jbsource.setFont(newfnt);
}
public void mouseExited(MouseEvent e){
JButton jbsource = (JButton)e.getSource();
jbsource.setFont(oldfnt);
}
public void mouseClicked(MouseEvent e){
}
}
*/
public class EnterOutHandle extends MouseAdapter
{
public void mouseEntered(MouseEvent e){
JButton jbsource = (JButton)e.getSource();
jbsource.setFont(newfnt);
}
public void mouseExited(MouseEvent e){
JButton jbsource = (JButton)e.getSource();
jbsource.setFont(oldfnt);
}
}
//定义事件处理类
private class ResultButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String exp = jexpression.getText();
//利用expression类来计算结果
expression expr = new expression(exp);
double re = 0;
try{
re = expr.getResult();
}catch(IllegalExpressionException le)
{
JOptionPane.showMessageDialog(jf, le.toString());
}
jexpression.setText(re + "");
}
}
public static void main(String[] args)
{
computor jf = new computor();
}
}