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();
    }
}

 

posted @ 2017-02-25 22:33  拓海藤原  阅读(3061)  评论(1编辑  收藏  举报