⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttonpanel.java

📁 做了一个还算复杂的计算器,还是有一定的 参考价值的(比较适合中初级者)
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/**
 * @(#)ButtonPanel.java
 *
 *
 * @author 
 * @version 1.00 2007/5/12
 */
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class ButtonPanel extends JPanel implements ActionListener {
    private JTextArea jtaExpPanel;
    private JButton jbtSin,jbtCos,jbtLn,jbtSqrt,jbtSqr,jbtPow,jbtBack,jbtFac,jbtStart,
                    jbtPlus,jbtSub,jbtMuti,jbtDiv,jbtEquals,jbtPoint,jbtLBracket,jbtRBracket,jbtLog;
    private JButton[] jbtData = new JButton[16];
    private String memory;
    private String[] innerExpression = new String[10];
    private String inter;//表示数字字符组成字符串的中间存储
    private int count;
    private JRadioButton jrbBinary;
    private JRadioButton jrbOctal;
    private JRadioButton jrbDecimal;
    private JRadioButton jrbHex;
    private JButton jbtStorage;
    private JButton jbtHelp;
    private JButton jbtRead;
    private JTextArea jtaMemory;
    private JScrollPane scrollPane;
    private ButtonGroup group;
    private final int JRB_BINARY = 1;
    private final int JRB_OCTAL = 2;
    private final int JRB_DECIMAL = 3;
    private final int JRB_HEX = 4;
    private int selection;
    private String storeMemory;
    private String[] storeInnerExpression;
    private int storeCount;
    private String storeInter;
    //初始化界面
    public ButtonPanel() {
    	//初始化字符串
    	storeCount = 0;
    	selection=JRB_DECIMAL;
    	inter="";
    	memory="";
    	count=0;
    	JPanel pUpper = new JPanel();
    	pUpper.setLayout(new BorderLayout());
    	//设置单选菜单
    	JPanel p1 = new JPanel();
    	p1.setLayout(new GridLayout(1,4));
    	jrbBinary = new JRadioButton("二进制");
    	jrbOctal = new JRadioButton("八进制");
    	jrbDecimal = new JRadioButton("十进制");
    	jrbHex = new JRadioButton("十六进制");
    	p1.add(jrbBinary);
    	p1.add(jrbOctal);
    	p1.add(jrbDecimal);
    	p1.add(jrbHex);
    	group = new ButtonGroup();
    	group.add(jrbBinary);
    	group.add(jrbOctal);
    	group.add(jrbDecimal);
    	group.add(jrbHex);
    	jrbDecimal.setSelected(true);
    	pUpper.add(p1,BorderLayout.SOUTH);
    	//设置存储菜单
    	JPanel p2 = new JPanel();
    	JPanel p3 = new JPanel();
    	p3.setLayout(new BorderLayout());
    	p2.setLayout(new GridLayout(3,1));
    	jbtHelp = new JButton("Help");
    	jbtStorage = new JButton("Storage");
    	jbtRead = new JButton("Read");
    	p2.add(jbtHelp);
    	p2.add(jbtStorage);
    	p2.add(jbtRead);
    	jtaMemory = new JTextArea("当前为十进制状态,亮色按钮为支持设备");
    	jtaMemory.setLineWrap(true);
    	jtaMemory.setWrapStyleWord(true);
    	jtaMemory.setEditable(false);
    	jtaMemory.setBorder(new BevelBorder(BevelBorder.RAISED,Color.BLACK,Color.BLACK));
    	jtaMemory.setFont(new Font("宋体",Font.BOLD,15));
    	jtaMemory.setForeground(Color.PINK);
    	scrollPane = new JScrollPane(jtaMemory);
    	p3.add(p2,BorderLayout.NORTH);
    	p3.add(scrollPane,BorderLayout.CENTER);
    	//设置显示界面
    	jtaExpPanel = new JTextArea();
    	jtaExpPanel.setLineWrap(true);
    	jtaExpPanel.setWrapStyleWord(true);
    	jtaExpPanel.setEditable(false);
    	jtaExpPanel.setBorder(new BevelBorder(BevelBorder.RAISED,Color.BLACK,Color.BLACK));
    	jtaExpPanel.setFont(new Font("宋体",Font.BOLD,20));
    	jtaExpPanel.setForeground(Color.BLUE);
    	pUpper.add(jtaExpPanel,BorderLayout.CENTER);
    	//设置按钮界面
    	JPanel pUnder = new JPanel();
    	pUnder.setLayout(new GridLayout(6,6,5,5));
    	jbtSin = new JButton("sin");
    	jbtCos = new JButton("cos");
    	jbtLn = new JButton("ln");
    	jbtSqrt = new JButton("sqrt");
    	jbtLBracket = new JButton("(");
    	jbtSqr = new JButton("sqr");
    	jbtPlus = new JButton("+");
    	jbtPow = new JButton("x^y");
    	jbtRBracket = new JButton(")");
    	jbtSub = new JButton("-");
    	jbtFac = new JButton("!");
    	jbtLog = new JButton("log");
    	jbtMuti = new JButton("*");
    	jbtBack = new JButton("Back");
    	jbtStart = new JButton("start");
    	jbtPoint = new JButton(".");
    	jbtEquals = new JButton("=");
    	jbtDiv = new JButton("/");
    	for (int i=0;i<10;i++)
    		jbtData[i]=new JButton(""+i);
    	jbtData[10] = new JButton("A");
    	jbtData[11] = new JButton("B");
    	jbtData[12] = new JButton("C");
    	jbtData[13] = new JButton("D");
    	jbtData[14] = new JButton("E");
    	jbtData[15] = new JButton("F");
    	for (int i=10;i<=15;i++)
    			jbtData[i].setBackground(Color.LIGHT_GRAY);
        pUnder.add(jbtSin);
    	pUnder.add(jbtCos);
    	pUnder.add(jbtLn);
    	pUnder.add(jbtSqrt);
    	pUnder.add(jbtSqr);
    	pUnder.add(jbtLBracket);
    	pUnder.add(jbtData[7]);
    	pUnder.add(jbtData[8]);
    	pUnder.add(jbtData[9]);
    	pUnder.add(jbtPlus);
    	pUnder.add(jbtPow);
    	pUnder.add(jbtRBracket);
    	pUnder.add(jbtData[4]);
    	pUnder.add(jbtData[5]);
    	pUnder.add(jbtData[6]);
    	pUnder.add(jbtSub);
    	pUnder.add(jbtFac);
    	pUnder.add(jbtLog);
    	pUnder.add(jbtData[1]);
    	pUnder.add(jbtData[2]);
    	pUnder.add(jbtData[3]);
    	pUnder.add(jbtMuti);
    	pUnder.add(jbtBack);
    	pUnder.add(jbtStart);
    	pUnder.add(jbtData[0]);
    	pUnder.add(jbtPoint);
    	pUnder.add(jbtEquals);
    	pUnder.add(jbtDiv);
    	for (int i=10;i<16;i++)
    		pUnder.add(jbtData[i]);
    	
    	//布置左边界面
    	JPanel jLeft = new JPanel();
    	jLeft.setLayout(new BorderLayout());
    	jLeft.add(pUpper,BorderLayout.CENTER);
    	jLeft.add(pUnder,BorderLayout.SOUTH);
    	jLeft.setBorder(new BevelBorder(BevelBorder.RAISED,Color.BLACK,Color.BLACK));
    	//总体布局
    	setLayout(new BorderLayout());
    	add(jLeft,BorderLayout.CENTER);
    	add(p3,BorderLayout.EAST);
        //注册监听器
        jbtHelp.addActionListener(this);
        jbtStorage.addActionListener(this);
        jbtRead.addActionListener(this);
        jrbBinary.addActionListener(this);
        jrbOctal.addActionListener(this);
        jrbDecimal.addActionListener(this);
        jrbHex.addActionListener(this);
        jbtSin.addActionListener(this);
    	jbtCos.addActionListener(this);
    	jbtLn.addActionListener(this);
    	jbtSqrt.addActionListener(this);
    	jbtSqr.addActionListener(this);
    	jbtData[7].addActionListener(this);
    	jbtData[8].addActionListener(this);
    	jbtData[9].addActionListener(this);
    	jbtPlus.addActionListener(this);
    	jbtPow.addActionListener(this);
    	jbtData[4].addActionListener(this);
    	jbtData[5].addActionListener(this);
    	jbtData[6].addActionListener(this);
    	jbtSub.addActionListener(this);
    	jbtFac.addActionListener(this);
    	jbtData[1].addActionListener(this);
    	jbtData[2].addActionListener(this);
    	jbtData[3].addActionListener(this);
    	jbtMuti.addActionListener(this);
    	jbtBack.addActionListener(this);
    	jbtData[0].addActionListener(this);
    	jbtPoint.addActionListener(this);
    	jbtEquals.addActionListener(this);
    	jbtDiv.addActionListener(this);
    	jbtStart.addActionListener(this);
        jbtLBracket.addActionListener(this);
        jbtRBracket.addActionListener(this);
        jbtLog.addActionListener(this);
        for (int i=10;i<16;i++)
        	jbtData[i].addActionListener(this);
    }
    //处理器对各个按纽的操作
    public void actionPerformed(ActionEvent e){
    	if (e.getSource()==jbtSin&&jrbDecimal.isSelected()){
    		if (inter!=""){
    			if (jrbBinary.isSelected())
    		    	inter = new DataStringDeal().BinaryToDecimalString(inter);
    		    if (jrbOctal.isSelected())
    		    	inter = new DataStringDeal().OctalToDecimalString(inter);
    		    if (jrbHex.isSelected())
    		    	inter = new DataStringDeal().HexToDecimalString(inter); 
    			innerExpression[count]=inter;
    			count++;
    			if (count>=innerExpression.length){
    			    String[] temp = new String[count*2];
    			    for (int i=0;i<innerExpression.length;i++)
    				    temp[i]=innerExpression[i];
    			    innerExpression=temp;
    		    }
    			inter="";
    		}
    		memory = memory+"sin";
    		innerExpression[count]="sin";
    		count++;
    		if (count>=innerExpression.length){
    			String[] temp = new String[count*2];
    			for (int i=0;i<innerExpression.length;i++)
    				temp[i]=innerExpression[i];
    			innerExpression=temp;
    		}
    		jtaExpPanel.setText(memory);
    	}
    	if (e.getSource()==jbtCos&&jrbDecimal.isSelected()){
    		//为前面打进的数字组成的字符串进行存储,并将INTER变量清零
    		//以便下一个数字字符串的存储
    		if (inter!=""){
    			if (jrbBinary.isSelected())
    		    	inter = new DataStringDeal().BinaryToDecimalString(inter);
    		    if (jrbOctal.isSelected())
    		    	inter = new DataStringDeal().OctalToDecimalString(inter);
    		    if (jrbHex.isSelected())
    		    	inter = new DataStringDeal().HexToDecimalString(inter); 
    			innerExpression[count]=inter;
    			count++;
    			if (count>=innerExpression.length){
    			    String[] temp = new String[count*2];
    			    for (int i=0;i<innerExpression.length;i++)
    				    temp[i]=innerExpression[i];
    			    innerExpression=temp;
    		    }
    			inter="";
    		}
    		memory=memory+"cos";
    		innerExpression[count]="cos";
    		count++;
    		if (count>=innerExpression.length){
    			String[] temp = new String[count*2];
    			for (int i=0;i<innerExpression.length;i++)
    				temp[i]=innerExpression[i];
    			innerExpression=temp;
    		}
    	    jtaExpPanel.setText(memory);
    	}
    	if (e.getSource()==jbtLn&&jrbDecimal.isSelected()){
    		//为前面打进的数字组成的字符串进行存储,并将INTER变量清零
    		//以便下一个数字字符串的存储
    		if (inter!=""){
    			if (jrbBinary.isSelected())
    		    	inter = new DataStringDeal().BinaryToDecimalString(inter);
    		    if (jrbOctal.isSelected())
    		    	inter = new DataStringDeal().OctalToDecimalString(inter);
    		    if (jrbHex.isSelected())
    		    	inter = new DataStringDeal().HexToDecimalString(inter); 
    			innerExpression[count]=inter;
    			count++;
    			if (count>=innerExpression.length){
    			    String[] temp = new String[count*2];
    			    for (int i=0;i<innerExpression.length;i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -