Java語言程序設計 上機實驗6 掌握Java的圖形用戶界面編程,掌握布局管理器和事件的響應方法


Java語言程序設計 上機實驗6

實驗目的

掌握Java的圖形用戶界面編程,掌握布局管理器和事件的響應方法。

實驗內容:(*)為選做內容

  1. 輸入兩個整數,分別進行加、減、乘、除等算術運算,界面如下圖所示。

 

 

要求:

1) 采用Swing組件設計圖形用戶界面,采用3個文本行JTextField分別表示兩個操作數和運算結果,其中表示運算結果的文本行只能顯示,不能輸入;采用組合框JComboBox提供多種算數運算符的選擇方式,組合框只能在下拉列表中選擇,不能編輯。

2) 文本行要響應單擊事件,組合框要響應選擇事件。兩個事件處理方法執行由組合框指定的算術運算。

3) 進行異常處理。當文本行中的字符串不能轉換成整數時,彈出對話框顯示指定信息,提示用戶重新輸入。

  1. (*) 顯示字符串中每個字符的Unicode值,參考下圖。

提示:使用表格組件,表格大小根據字符串長度變化。

    

實驗要求:

1. 在實驗報告中給出程序運行結果截圖。

2. 源程序代碼附到實驗報告的最后。

3. 認真填寫實驗報告並妥善存檔,在上機實驗課之前發送電子版實驗報告至 wsycup@foxmail.com

注意郵件標題附件實驗報告文件名均為:

Java1實驗報告N_學號_姓名

其中N為阿拉伯數字,指第幾次實驗,例如

Java1實驗報告3_ 2012010400_李雷

請嚴格按照規定的格式發送郵件(注意標題中Java”后的數字“1”)郵件標題不符合格式要求等同於未交作業,並在規定的時間發送實驗報告郵件,過期無效。

4. 實驗報告雷同者將不能得到相應的平時分。

 

 

 

附錄:實驗報告

實驗題目__實驗6_______

學號_2014011329__    姓名_許愷____     班級__計算機14-1__     時間__2016.5.11____

實驗題目解答

    

 

:源程序

package com.Test6;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Test6 extends JFrame implements ActionListener{
    private JTextField tex1,tex2,fin;
    private JLabel jl;
    private MessageJDialog jd;
    private JComboBox box;
    private static String fuhao[]={"+","-","*","/"};
    int i;
    
    public Test6(){
        super("整數計算器");
        this.setBounds(300,240,420,80);
        this.setResizable(false);
        this.setBackground(java.awt.Color.lightGray);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
        
        tex1=new JTextField(10);
        this.getContentPane().add(tex1);
        tex1.setHorizontalAlignment(JTextField.LEFT);
        tex1.addActionListener(this);
        
        box=new JComboBox<String>(fuhao);
        box.addActionListener(this);
        box.setEditable(false);
        this.getContentPane().add(box);
        
        tex2=new JTextField(10);
        this.getContentPane().add(tex2);
        tex2.setHorizontalAlignment(JTextField.LEFT);
        tex2.addActionListener(this);
        
        
        jl=new JLabel("=");
        this.getContentPane().add(jl);
        jl.setHorizontalAlignment(JTextField.LEFT);
        
        fin=new JTextField(10);
        this.getContentPane().add(fin);
        fin.setHorizontalAlignment(JTextField.LEFT);
        fin.setEditable(false);
        fin.addActionListener(this);
        
        jd=new MessageJDialog(this);
        this.setVisible(true);
        
    }
    private class MessageJDialog extends JDialog
    {
        JLabel jla;
        JFrame Frame;
        MessageJDialog(JFrame Frame)
        {
            super(Frame,"警告",true);
            this.Frame=Frame;
            this.setSize(300,80);
            jla=new JLabel("111",JLabel.CENTER);
            this.getContentPane().add(jla);
            this.setDefaultCloseOperation(HIDE_ON_CLOSE);    
        }
        void show(String message)
        {
            jla.setText(message);
            this.setLocation(Frame.getX()+100,Frame.getY()+100);
            
            this.setVisible(true);
        }
    }
    public void actionPerformed(ActionEvent a){
        if(a.getSource()==box)
        {
            i=box.getSelectedIndex();            
        }
        if(a.getSource()==tex2||a.getSource()==tex1)
        {
            String str = null;
            try
            {
                if(i==0)
                {
                    Integer x=Integer.parseInt(tex1.getText());
                    Integer y=Integer.parseInt(tex2.getText());    
                    str=Integer.toString(x+y);            
                }
                else if(i==1)
                {
                    Integer x=Integer.parseInt(tex1.getText());
                    Integer y=Integer.parseInt(tex2.getText());    
                    str=Integer.toString(x-y);                
                }
                else if(i==2)
                    {
                        Integer x=Integer.parseInt(tex1.getText());
                        Integer y=Integer.parseInt(tex2.getText());    
                        str=Integer.toString(x*y);            
                    }
                else if(i==3)
                        {
                            Integer x=Integer.parseInt(tex1.getText());
                            Integer y=Integer.parseInt(tex2.getText());    
                            if(y==0)
                            {
                                jd.show("除數不能為0");                
                                tex1.setText("");
                                tex2.setText("");
                                fin.setText("");    
                            }
                            else
                                str=Integer.toString(x/y);    
                        }                
                fin.setText(str);
            }
            catch(NumberFormatException e1)
            {
                jd.show("請輸入整數");
                tex1.setText("");
                tex2.setText("");
                fin.setText("");                    
            }
            finally{};
        /*try{
            int x=Integer.parseInt(tex1.getText());
            int y=Integer.parseInt(tex2.getText());
            if(box.getSelectedIndex()==0)
                fin.setText(Integer.toString(x+y));
            if(box.getSelectedIndex()==1)
                fin.setText(Integer.toString(x-y));
            if(box.getSelectedIndex()==2)
                fin.setText(Integer.toString(x*y));
            if(box.getSelectedIndex()==3&&tex2.getText()!="0")
                fin.setText(Integer.toString(x/y));
        }
        catch(NumberFormatException e1){
            jla.show("您輸入的字符不能轉換成整型,請重新輸入!");
        }*/
        }
    }
    public static void main(String[] args){
        // TODO Auto-generated method stub
        new Test6();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM