import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
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.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener;
import java.security.acl.LastOwnerException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class counter extends JFrame{
JPanel p=new JPanel();
JPanel p2=new JPanel();
JButton B[]=new JButton[20];
JTextField F=new JTextField(4);
Action action=new Action();
double result,middle,middle1;
String Last="",SLog="";
JTextArea area=new JTextArea(3,7);
JScrollPane scrall=new JScrollPane(area);
JTextArea area2=new JTextArea(1,10);
JTextField F1=new JTextField(15);
String S[]= {
"请选择","摄氏度到华氏度","摄氏度到开尔文","华氏度到摄氏度","华氏度到开尔文","开尔文到摄氏度","开尔文到华氏度"
};
JComboBox Box=new JComboBox(S);
public counter() {
JTabbedPane pane=new JTabbedPane();
pane.addTab("计算器界面", p);
pane.addTab("进制转换界面", p2);
initpanel();
GridBagLayout layout=new GridBagLayout();
//p.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
//p.add(F);
c.fill = GridBagConstraints.BOTH;
c.gridy=0;
c.gridwidth=4;
layout.setConstraints(F, c);
p.add(F);
for(int n=0;n<14;n++) {
B[n]=new JButton(""+(n+1));
B[n].setBackground(new Color(156,156,255));
c.gridx=n%4;
c.gridy=n/4+1;
c.weightx=3.0;
c.weighty=3.0;
c.gridwidth=1;
layout.setConstraints(B[n], c);
p.add(B[n]);
}
F.setBackground(Color.orange);
B[3].setText("加");
B[4].setText("4");
B[5].setText("5");
B[6].setText("6");
B[8].setText("7");
B[9].setText("8");
B[10].setText("9");
B[12].setText("0");
B[7].setText("减");
B[11].setText("乘");
B[13].setText("除");
B[14]=new JButton();
B[15]=new JButton("%");
B[15].setVisible(false);
B[16]=new JButton("回到主程序");
B[17]=new JButton("^");
B[18]=new JButton(".");
B[16].setBackground(Color.red);
c.gridx=4;
c.gridy=1;
layout.setConstraints(B[16], c);
p.add(B[16]);
c.gridy=3;
layout.setConstraints(B[15],c);
p.add(B[15]);
c.gridy=2;
layout.setConstraints(B[18], c);
p.add(B[18]);
c.gridx=2;
c.gridy=4;
layout.setConstraints(B[17], c);
p.add(B[17]);
c.gridx=3;
c.gridy=4;
c.weightx=2;
c.gridwidth=2;
B[14].setText("等于");
layout.setConstraints(B[14],c);
c.gridx=4;
c.gridy=0;
c.weightx=2.0;
layout.setConstraints(scrall, c);
p.add(scrall);
p.add(B[14]);
p.setLayout(layout);
F.setFont(new Font("微软雅黑",Font.BOLD,30));
add(pane);
addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowIconified(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowClosing(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowClosed(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowActivated(WindowEvent e) {
// TODO 自动生成的方法存根
}
});
initbutton();
setSize(800,900);
setVisible(true);
}
private void initpanel() {
JLabel L=new JLabel("输入并选择一个转化形式");
p2.setLayout(new FlowLayout());
p2.add(L);
p2.add(F1);
p2.add(Box);
p2.add(area2);
Box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED)
area2.setText(""+chance(Box.getSelectedIndex()));
// TODO 自动生成的方法存根
}
});
final JTextField F3=new JTextField(10);
p2.add(F3);
JButton b1=new JButton("转换为2进制");
p2.add(b1);
final JTextArea result=new JTextArea(5,25);
p2.add(new JScrollPane(result));
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result.append(tentotwo(Long.valueOf(F3.getText()))+"\n");
// TODO 自动生成的方法存根
}
});
p2.add(new JLabel("没有添加的功能:高进制转低进制"));
p2.add(new JLabel("没有实现的功能:8,16,2没有添加"));
// TODO 自动生成的方法存根
}
public void initbutton() {
for(int n=0;n<19;n++) {
B[n].addActionListener(action);
}
}
public String tentotwo(long num) {
System.out.println(num);
String S="";
while(num>=2) {
S=num%2+S;
if(num%2==1)
num-=1;
num/=2; }
if(num==1)
S=1+S;
return S;
}
class Action implements ActionListener{
String S="";
@Override
public void actionPerformed(ActionEvent e) {
SLog+=e.getActionCommand();
if(e.getActionCommand().equals("回到主程序")){
//mainprogram.B1=true;
JOptionPane.showMessageDialog(null, "没有找到主程序这只是其中的一个主程序的一部分如果想查看主程序可以在码源天空中搜索"+"\t"+"多功能小程序集合");
}
else
if(e.getActionCommand().equals("加")||e.getActionCommand().equals("减")||
e.getActionCommand().equals("乘")||e.getActionCommand().equals("除")||e.getActionCommand().equals("等于")||
e.getActionCommand().equals("%")||e.getActionCommand().equals("^"))
{middle1=Integer.valueOf(F.getText());
lastcounter(Last,middle1);
middle=Double.valueOf(F.getText());
Last=e.getActionCommand();
if(e.getActionCommand().equals("等于"))
SLog+=middle;
System.out.println(SLog);
F.setText("");
S="";
if(Last.equals("等于")) {
SLog+="\n";
area.setText(SLog);
area.setFont(new Font("微软雅黑",Font.BOLD,20));
}
// if(e.getActionCommand().equals("加")) {
// Last="加";
// middle=Integer.valueOf(F.getText());
//
// F.setText("");
// S="";
// }
// if(e.getActionCommand().equals("减")) {
// Last="减";
// middle=Integer.valueOf(F.getText());
//
// F.setText("");
// S="";
// }
// if(e.getActionCommand().equals("乘")) {
// Last="乘";
// middle=Integer.valueOf(F.getText());
//
// F.setText("");
// S="";
// }
// if(e.getActionCommand().equals("除")) {
// Last="除";
// middle=Integer.valueOf(F.getText());
//
// F.setText("");
// S="";
// }
// if(e.getActionCommand().equals("等于")) {
// Last="等于";
// middle=Integer.valueOf(F.getText());
//
//
// }
//
}else {
S+=e.getActionCommand();
F.setText(S);
}
}
}
public void lastcounter(String last,double num) {
if(last.equals("加")) {
middle+=num;
F.setText(""+middle);
//SLog+=middle;
middle=0;
}
if(last.equals("减")) {
middle-=num;
F.setText(""+middle);
//SLog+=middle;
middle=0;
}
if(last.equals("乘")) {
middle*=num;
F.setText(""+middle);
//SLog+=middle;
middle=0;
}
if(last.equals("除")) {
if(num==0) {
JOptionPane.showMessageDialog(null, "分母不能为0请重新输入");
return;
}
middle/=num;
F.setText(""+middle);
SLog+=middle;
middle=0;
}
if(last.equals("^")) {
middle=Math.pow(middle,num);
F.setText(""+middle);
SLog+=middle;
middle=0;
}
}
public static void main(String[] args) {
counter c=new counter();
c.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// TODO 自动生成的方法存根
}
public String chance(int I) {
int middle=0;
String S="";
middle=Integer.valueOf(((F1.getText().equals("")? "0" : F1.getText())));
if(I==1)
S=C1((double) middle);
if(I==2) {
S=C2(middle);
}
if(I==3) {
S=C3(middle);
}
if(I==4) {
S=C4(middle);
}
if(I==5) {
S=C5(middle);
}
if(I==6) {
S=C6(middle);
}
return S;
}
public String C1(Double double1) {
return ""+(double1*1.8+32);
}
public String C2(int I) {
return ""+(273.15+I);
}
public String C3(int I) {
return ""+(1.8*I+32);
}
public String C4(int I) {
return ""+(Double.valueOf(C2(I))+273.15);
}
public String C5(int I) {
return ""+(I-273.15);
}
public String C6(int I) {
return ""+(C1(Double.valueOf(C5(I))));
}
}