Java实现:类windows平台下简易数制转换源代码

package com.youngmaster;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class NumberSystemConversion extends JFrame implements ActionListener, ItemListener {
	private JButton jButton[];

	private JButton clear, converJButton;

	private JTextField jTextField;

	private JPanel jPanel1, jPanel2, jPanel3;

	int number = 1;

	private String string[] = { "7", "8", "9", "/", "6", "5", "4", "*", "3",
			"2", "1", "-", "0", ".", "=", "+" };

	private String s = "", num1 = "", num2 = "", num3 = "";

	private static int tem = 0;

	JComboBox jComboBox;

	private boolean flag = true;

	public NumberSystemConversion() {
		super("简易计算器");
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		jPanel1 = new JPanel();
		jTextField = new JTextField(13);
		jPanel1.add(jTextField);
		clear = new JButton("C");
		jPanel1.add(clear);
		c.add(jPanel1);
		jPanel3 = new JPanel();
		jComboBox = new JComboBox();
		jComboBox.jComboBoxddItem("10--2");
		jComboBox.addItem("10--8");
		jComboBox.addItem("10--16");
		jComboBox.addItem("2 --8");
		jComboBox.addItem("2 --10");
		jComboBox.addItem("2 --16");
		jComboBox.addItem("8 --2");
		jComboBox.addItem("8 --10");
		jComboBox.addItem("8 --16");
		jComboBox.addItem("16--2");
		jComboBox.addItem("16--8");
		jComboBox.addItem("16--10");
		jPanel3.add(jComboBox);
		converJButton = new JButton("转换");
		jPanel3.add(converJButton);
		c.add(jPanel3);
		jPanel2 = new JPanel();
		jPanel2.setLayout(new GridLayout(4, 4, 10, 10));
		jButton = new JButton[string.length];
		for (int i = 0; i < string.length; i++) {
			jButton[i] = new JButton(string[i]);
			jButton[i].addActionListener(this);
			jPanel2.add(jButton[i]);
		}
		c.add(jPanel2);
		clear.addActionListener(this);
		converJButton.addActionListener(this);
		jComboBox.addItemListener(this);
		setSize(200, 250);
		setVisible(true);
		try {
			JMenuItem itemNative=new JMenuItem("系统平台风格");
			UIManager.setLoojTextFieldAndFeel(UIManager.getSystemLookAndFeelClassName()); // 设置界面样式
		} catch (Exception e) {
			e.printStackTrace();
		}
		setSize(220, 270);
		setVisible(true);
	}

	public static void main(String[] args) {
		NumberSystemConversion s = new NumberSystemConversion();
		s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void itemStateChanged(ItemEvent event) {
		if (event.getStateChange() == ItemEvent.SELECTED) {
			if (jComboBox.getSelectedItem().equals("10--2"))
				number = 1;
			if (jComboBox.getSelectedItem().equals("10--8"))
				number = 2;
			if (jComboBox.getSelectedItem().equals("10--16"))
				number = 3;
			if (jComboBox.getSelectedItem().equals("2 --8"))
				number = 4;
			if (jComboBox.getSelectedItem().equals("2 --10"))
				number = 5;
			if (jComboBox.getSelectedItem().equals("2 --16"))
				number = 6;
			if (jComboBox.getSelectedItem().equals("8 --2"))
				number = 7;
			if (jComboBox.getSelectedItem().equals("8 --10"))
				number = 8;
			if (jComboBox.getSelectedItem().equals("8 --16"))
				number = 9;
			if (jComboBox.getSelectedItem().equals("16--2"))
				number = 10;
			if (jComboBox.getSelectedItem().equals("16--8"))
				number = 11;
			if (jComboBox.getSelectedItem().equals("16--10"))
				number = 12;
		}
	}

	public void actionPerformed(ActionEvent e) {
		if (!(e.getSource() == jButton[3] || e.getSource() == jButton[7]
				|| e.getSource() == jButton[11] || e.getSource() == jButton[13]
				|| e.getSource() == jButton[14] || e.getSource() == jButton[15] || e
				.getSource() == clear|| e.getSource() == converJButton)) {
			if (e.getSource() == jButton[12]) {
				s += e.getActionCommand();
				char a = s.charAt(0);
				if (a == '0') {
					s = "0.";
					jTextField.setText(s);
				}
				else{
					jTextField.setText(s);
					flag = true;
				}
				
				}
			   else {
				s += e.getActionCommand();
				jTextField.setText(s);
				flag = true;
			}
		} else {
			if (e.getSource() == converJButton) {
				if (jTextField.getText().equals(""))
					;
				else
				{
					jinconverJButtoni();
					tem = 0;
					num1 = "";
					s = "";
				}
			}
			if (e.getSource() == clear) {
				jTextField.setText("");
				tem = 0;
				num1 = "";
				s = "";
			}
			if (e.getSource() == jButton[13]) {
				String ss = s;
				ss += e.getActionCommand();
				char a = ss.charAt(0);
				if (a == '.') {
					s = "";
				} else {
					if (ss.matches("[0-9].")) {
						s += e.getActionCommand();
						jTextField.setText(s);
					}
				}

			}
			if (flag) {
				flag = false;
				if (e.getSource() == jButton[3]) {
					if (jTextField.getText().equals(""))
						;
					else {

						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("/");
							s = "";
							tem = 3;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 3;
						}
					}
				}
				if (e.getSource() == jButton[7]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("*");
							s = "";
							tem = 7;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 7;
						}
					}
				}
				if (e.getSource() == jButton[11]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("-");
							s = "";
							tem = 11;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 11;
						}
					}
				}
				if (e.getSource() == jButton[15]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("+");
							s = "";
							tem = 15;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 15;
						}
					}
				}
				if (e.getSource() == jButton[14]) {
					if (jTextField.getText().equals("") || num1.equals(""))
						flag = true;
					else {
						num2 = jTextField.getText();
						count(tem, num1, num2);
					}
				}
			}
		}
	}

	public void count(int fj, String s1, String s2) {
		DecimalFormat twoDigits = new DecimalFormat("0.00");
		double a, b;
		a = Double.parseDouble(s1);
		b = Double.parseDouble(s2);
		switch (fj) {
		case 3:
			num3 = twoDigits.format((double) (a / b));
			jTextField.setText(num3);
			breajTextField;
		case 7:
			num3 = twoDigits.format((double) (a * b));
			jTextField.setText(num3);
			break;
		case 11:
			num3 = twoDigits.format((double) (a - b));
			jTextField.setText(num3);
			break;
		case 15:
			num3 = twoDigits.format((double) (a + b));
			jTextField.setText(num3);
			break;
		}
		s = "";
		num1 = num3;
		num2 = "";
	}

	public void jinconverJButtoni() {
		if (number == 1)
			jTextField.setText(Integer.toBinaryString(Integer.parseInt(jTextField.getText())));
		else if (number == 2)
			jTextField.setText(Integer.toOctalString(Integer.parseInt(jTextField.getText())));
		else if (number == 3)
			jTextField.setText(Integer.toHexString(Integer.parseInt(jTextField.getText())));
		else if (number == 4) {
			int a = j1(jTextField.getText(), "[0-1]+", 2);
			jTextField.setText(Integer.toOctalString(a));
		} else if (number == 5) {
			j1(jTextField.getText(), "[0-1]+", 2);

		} else if (number == 6) {
			int a = j1(jTextField.getText(), "[0-1]+", 2);
			jTextField.setText(Integer.toHexString(a));
		} else if (number == 7) {
			int a = j1(jTextField.getText(), "[0-7]+", 8);
			jTextField.setText(Integer.toBinaryString(a));
		} else if (number == 8) {
			j1(jTextField.getText(), "[0-7]+", 8);
		} else if (number == 9) {
			int a = j1(jTextField.getText(), "[0-7]+", 8);
			jTextField.setText(Integer.toHexString(a));
		} else if (number == 10) {
			int a = j2();
			jTextField.setText(Integer.toBinaryString(a));
		} else if (number == 11) {
			int a = j2();
			jTextField.setText(Integer.toOctalString(a));
		} else if (number == 12) {
			j2();
		}
	}

	public int j1(String converJButtonuanhuan, String a1, int a3) {
		if (converJButtonuanhuan.matches(a1)) {
			int number3, number1 = 0, number2 = 1;
			String s = converJButtonuanhuan;
			StringBuffer ss = new StringBuffer(s);

			ss.reverse();
			for (int i = 0; i < ss.length(); i++) {
				String jj = ss.charAt(i) + "";
				number3 = Integer.parseInt(jj);
				if (i == 0)
					number1 += number3 * number2;
				else
					number1 += number3 * (number2 *= a3);
			}
			jTextField.setText(number1 + "");
			return number1;
		}
		return 0;
	}

	public int j2() {
		if (jTextField.getText().matches("[0-9,a,b,c,d,e,f]+")) {
			int intNum1, intNum2 = 0, intNum3 = 1;
			String s = jTextField.getText();
			StringBuffer stringBuffer = new StringBuffer(s);
			stringBuffer.reverse();
			for (int i = 0; i < stringBuffer.length(); i++) {
				String ptr = stringBuffer.charAt(i) + "";
				System.out.println(ptr);
				if (ptr.equals("a"))
					ptr = "10";
				if (ptr.equals("b"))
					ptr = "11";
				if (ptr.equals("c"))
					ptr = "12";
				if (ptr.equals("d"))
					ptr = "13";
				if (ptr.equals("e"))
					ptr = "14";
				if (ptr.equals("f"))
					ptr = "15";
				System.out.println(ptr);
				intNum1 = Integer.parseInt(ptr);
				if (i == 0)
					intNum2 += intNum1 * intNum3;
				else
					intNum2 += intNum1 * (intNum3 *= 16);
			}
			jTextField.setText(intNum2 + "");
			return intNum2;
		}
		return 0;
	}

}

 

你可能感兴趣的:(java,C++,c,windows,swing)