度量衡换算

度量衡换算

大二Java课设

学艺不精,多多包涵

 

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

public class Conversion extends JFrame implements ActionListener{

    //建立工具栏中的按钮组件

    JToolBar toolBar=new JToolBar();

    JButton picLength=new JButton("长度(L)");

    JButton picSquare=new JButton("面积(S)");

    JButton picVolume=new JButton("体积(V)");

    JButton picTemper=new JButton("温度(K)");

    JPanel boxLength=new JPanel();

    JPanel boxSquare=new JPanel();

    JPanel boxVolume=new JPanel();

    JPanel boxTemper=new JPanel();

    JMenuBar jMenuBar=new JMenuBar();

    JMenu aboutMenu=new JMenu("帮助");

    JMenuItem aboutItem=new JMenuItem("程序说明");

    String[] length={"厘米(cm)","分米(dm)","米(m)","千米(km)"};

    String[] square={"平方厘米(cm^2)","平方分米(dm^2)","平方米(m^2)"};

    String[] volume={"立方厘米(cm^3)=毫升(mL)","立方分米(dm^3)=升(L)","立方米(m^3)"};

    String[] temper={"摄氏度(℃)","华氏度(℉)","开尔文度(°K)"};

    //输入

    JComboBox jbxLength=new JComboBox(length);

    JComboBox jbxSquare=new JComboBox(square);

    JComboBox jbxVolume=new JComboBox(volume);

    JComboBox jbxTemper=new JComboBox(temper);

    //转换成

    JComboBox jbxLength1=new JComboBox(length);

    JComboBox jbxSquare1=new JComboBox(square);

    JComboBox jbxVolume1=new JComboBox(volume);

    JComboBox jbxTemper1=new JComboBox(temper);

    //输入框 

    JTextField jtfLength=new JTextField(20);

    JTextField jtfLength1=new JTextField(20);

    JTextField jtfSquare=new JTextField(20);

    JTextField jtfSquare1=new JTextField(20);

    JTextField jtfVolume=new JTextField(20);

    JTextField jtfVolume1=new JTextField(20);

    JTextField jtfTemper=new JTextField(20);

    JTextField jtfTemper1=new JTextField(20);

    CardLayout centerLayout=new CardLayout(5,5);

    JPanel centerPane=new JPanel();

    private static final long serialVersionUID = 1L;

    public Conversion(){

        jtfLength1.setEditable(false);

        jtfSquare1.setEditable(false);

        jtfVolume1.setEditable(false);

        jtfTemper1.setEditable(false);

        setTitle("度量衡换算器");

        setResizable(false);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        boxLength.setLayout(new BoxLayout(boxLength,BoxLayout.Y_AXIS));

        boxSquare.setLayout(new BoxLayout(boxSquare,BoxLayout.Y_AXIS));

        boxVolume.setLayout(new BoxLayout(boxVolume,BoxLayout.Y_AXIS));

        boxTemper.setLayout(new BoxLayout(boxTemper,BoxLayout.Y_AXIS));

        //在工具栏中添加按钮组件

        toolBar.add(picLength);    

        toolBar.add(picSquare);

        toolBar.add(picVolume);

        toolBar.add(picTemper);

        picLength.setMnemonic('L');

        picSquare.setMnemonic('S');

        picVolume.setMnemonic('V');

        picTemper.setMnemonic('K');

        boxLength.add(new JLabel("输入:"));//长度布局

        boxLength.add(jbxLength);

        boxLength.add(jtfLength);

        boxLength.add(new JLabel("转换成:"));

        boxLength.add(jbxLength1);

        boxLength.add(jtfLength1);

        boxSquare.add(new JLabel("输入:"));//面积布局

        boxSquare.add(jbxSquare);

        boxSquare.add(jtfSquare);

        boxSquare.add(new JLabel("转换成:"));

        boxSquare.add(jbxSquare1);

        boxSquare.add(jtfSquare1);

        boxVolume.add(new JLabel("输入:"));//体积布局

        boxVolume.add(jbxVolume);

        boxVolume.add(jtfVolume);

        boxVolume.add(new JLabel("转换成:"));

        boxVolume.add(jbxVolume1);

        boxVolume.add(jtfVolume1);

        boxTemper.add(new JLabel("输入:"));//温度布局

        boxTemper.add(jbxTemper);

        boxTemper.add(jtfTemper);

        boxTemper.add(new JLabel("转换成:"));

        boxTemper.add(jbxTemper1);

        boxTemper.add(jtfTemper1);

        centerPane.setLayout(centerLayout);//设置中心区布局

        centerPane.add("Length page",boxLength);

        centerPane.add("Square page",boxSquare);

        centerPane.add("Volume page",boxVolume);

        centerPane.add("Temperature page",boxTemper);

        aboutMenu.add(aboutItem);

        jMenuBar.add(aboutMenu);

        setJMenuBar(jMenuBar);

        Container contentPane=getContentPane();

        contentPane.add(toolBar,BorderLayout.NORTH);

        contentPane.add(centerPane, BorderLayout.CENTER);

        aboutItem.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ap){

                AboutFrame aboutFrame=new AboutFrame();

                aboutFrame.setBounds(0, 0, 400, 300);

                aboutFrame.setVisible(true);

            }

        });

        //为工具栏中组件添加监听

        picLength.addActionListener(this);

        picSquare.addActionListener(this);

        picVolume.addActionListener(this);

        picTemper.addActionListener(this);

        //各个面板中下拉框添加监听

        jtfLength.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                indexListener(1);

            }

        });

        jtfLength.addFocusListener(new FocusListener(){

            public void focusGained(FocusEvent arg0) {}

            public void focusLost(FocusEvent arg0) {}     

        });

        jbxLength1.addItemListener(new ItemListener(){

            public void itemStateChanged(ItemEvent ie) {

                if(jtfLength.getText().equals("")){

                    jtfLength.setText("0");            

                }

                indexListener(1);

            }          

        });

        jtfSquare.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                indexListener(2);

            }

        });

        jbxSquare1.addItemListener(new ItemListener(){

            public void itemStateChanged(ItemEvent ie) {

                if(jtfSquare.getText().equals("")){

                    jtfSquare.setText("0");            

                }

                indexListener(2);

            }          

        });

        jtfVolume.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                indexListener(3);

            }

        });

        jbxVolume1.addItemListener(new ItemListener(){

            public void itemStateChanged(ItemEvent ie) {

                if(jtfVolume.getText().equals("")){

                    jtfVolume.setText("0");            

                }

                indexListener(3);

            }          

        });

        jtfTemper.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){          

                indexListener(4);

            }

        });

        jbxTemper1.addItemListener(new ItemListener(){

            public void itemStateChanged(ItemEvent ie) {

                if(jtfTemper.getText().equals("")){

                    jtfTemper.setText("0");            

                }

                indexListener(4);

            }          

        });

    }

    public void indexListener(int index){

        switch (index){//换算关系的方法

        case 1://长度

            int cb10=jbxLength.getSelectedIndex();

            int cb11=jbxLength1.getSelectedIndex();

            Double temDouble1;

            temDouble1=Double.valueOf(jtfLength.getText().trim());

            if(cb10==cb11){}

            else if(cb10==0&&cb11==1){temDouble1/=10;}

            else if(cb10==0&&cb11==2){temDouble1/=100;}

            else if(cb10==0&&cb11==3){temDouble1/=100*1000;}  

            else if(cb10==1&&cb11==0){temDouble1*=10;}

            else if(cb10==1&&cb11==2){temDouble1/=10;}

            else if(cb10==1&&cb11==3){temDouble1/=10*1000;}

            else if(cb10==2&&cb11==0){temDouble1*=100;}

            else if(cb10==2&&cb11==1){temDouble1*=10;}

            else if(cb10==2&&cb11==3){temDouble1/=1000;}

            else if(cb10==3&&cb11==0){temDouble1*=100*1000;}

            else if(cb10==3&&cb11==1){temDouble1*=10*1000;}

            else if(cb10==3&&cb11==2){temDouble1*=1000;}

            jtfLength1.setText(temDouble1.toString());

            break;

        case 2://面积

            int cb20=jbxSquare.getSelectedIndex();

            int cb21=jbxSquare1.getSelectedIndex();

            Double temDouble2;

            temDouble2=Double.valueOf(jtfSquare.getText().trim());

            if((cb20==cb21)){}

            else if(cb20==0&&cb21==1){temDouble2/=100;}

            else if(cb20==0&&cb21==2){temDouble2/=10000;}

            else if(cb20==1&&cb21==0){temDouble2*=100;}

            else if(cb20==1&&cb21==2){temDouble2/=100;}

            else if(cb20==2&&cb21==0){temDouble2*=10000;}

            else if(cb20==2&&cb21==1){temDouble2*=100;}

            jtfSquare1.setText(temDouble2.toString());     

            break;

        case 3://体积

            int cb30=jbxVolume.getSelectedIndex();

            int cb31=jbxVolume1.getSelectedIndex();

            Double temDouble3;

            temDouble3=Double.valueOf(jtfVolume.getText().trim());

            if((cb30==cb31)){}

            else if(cb30==0&&cb31==1){temDouble3/=1000;}

            else if(cb30==0&&cb31==2){temDouble3/=1000000;}

            else if(cb30==1&&cb31==0){temDouble3*=1000;}

            else if(cb30==1&&cb31==2){temDouble3/=1000;}

            else if(cb30==2&&cb31==0){temDouble3*=1000000;}

            else if(cb30==2&&cb31==1){temDouble3*=1000;}

            jtfVolume1.setText(temDouble3.toString());     

            break;                

        case 4: //温度

            int cb40=jbxTemper.getSelectedIndex();

            int cb41=jbxTemper1.getSelectedIndex();

            Double temDouble4;

            temDouble4=Double.valueOf(jtfTemper.getText().trim());

            if((cb40==cb41)){}

            else if(cb40==0&&cb41==1){ temDouble4=(temDouble4*9/5)+32;}

            else if(cb40==0&&cb41==2){temDouble4+=273.16;}

            else if(cb40==1&&cb41==0){temDouble4=(temDouble4-32)*5/9;}//C=(F-32)×5/9

            else if(cb40==1&&cb41==2){temDouble4=(temDouble4-32)*5/9+273.16;}

            else if(cb40==2&&cb41==0){temDouble4-=273.16;}

            else if(cb40==2&&cb41==1){temDouble4=(temDouble4-273.16)*9/5+32;}//K ->℉

            jtfTemper1.setText(temDouble4.toString());

            break;

        default: break;

        }

    }

    public void actionPerformed(ActionEvent e) {

       

        if(e.getSource()==picLength){

            centerLayout.first(centerPane);

        }

        else if(e.getSource()==picSquare){

            centerLayout.first(centerPane);

            centerLayout.next(centerPane);         

        }

        else if(e.getSource()==picVolume){

            centerLayout.first(centerPane);

            centerLayout.next(centerPane);

            centerLayout.next(centerPane);

        }

        else if(e.getSource()==picTemper){

            centerLayout.first(centerPane);//1

            centerLayout.next(centerPane);//2

            centerLayout.next(centerPane);//3

            centerLayout.next(centerPane);//4

        }

    }

    public static void main(String[] args) {

        try{

            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

        }

        catch(Exception e){       

        }

        Conversion conversion=new Conversion();

        conversion.pack();

        conversion.setVisible(true);  

    }

}

 

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")

public class AboutFrame extends JFrame {

    JPanel contentPane;

    JScrollPane jSPane=new JScrollPane();

    JTextArea aboutText=new JTextArea(5,5);

    String temStr;

    Font aboutFont=new Font("微软雅黑",1,15);

    public AboutFrame(){

        enableEvents(AWTEvent.WINDOW_EVENT_MASK);

        setSize(new Dimension(600,500));

        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        contentPane=(JPanel) getContentPane();

        contentPane.setLayout(new BorderLayout());     

        setSize(new Dimension(400,300));

        setTitle("程序说明");  

        contentPane=(JPanel) getContentPane();

        contentPane.setLayout(new BorderLayout());

    temStr="此程序为信息工程学院16级面向对象程序设计期末课程设计\n" +

               "其中只实现了常用长度、面积、体积、温度单位的换算。\n" +

               "其中还有很多没有完善的地方,感谢老师予以指正。\n"+

                      "\n" +"\n" +"\n" +"\n" +

               "计算机科学与技术   金栋梁   学号:2016010xxxx";

        aboutText.setText(temStr);

        aboutText.setFont(aboutFont);

        jSPane.getViewport().add(aboutText,null); 

        contentPane.add(jSPane, "Center");

        this.aboutText.setEditable(false);

    }  

}

转载于:https://www.cnblogs.com/jindongliang/p/8063904.html

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值