相关说明

  • 文章内容:Java实验

  • 所属课程:Java语言程序设计

  • 作者主页:https://blog.csdn.net/cxh_1231


1. 实验目的:

  通过编写一个Java GUI应用程序,熟悉Java GUI应用程序的结构和开发过程;掌握面向对象程序设计中的“封装和继承”的基本原理,“类、对象和接口”的基本概念、以及“Java的事件处理机制”、“图形用户界面设计”技术。

2. 实验内容:

 2.1 问题描述:

  自己构思,编写一个具有如下布局的小应用程序,要求当在上面的文本区中输入若干数时,下面的文本框同时对输入的数进行求和运算并求出平均数。即随着输入的变化,文本框不断更新求和及平均值。


 2.2 基本要求:

  进一步熟悉小应用程序的结构和开发过程;掌握数组的创建和使用方法;掌握文本框和文本区的使用方法;掌握接口的使用方法,掌握基本组件的事件处理机制;掌握java.awt包的布局类使用方法。

3. 实验代码

注:手机无法正常显示请在电脑端打开此文章

 1package test2;  
2import java.awt.EventQueue;  
3import javax.swing.JFrame;  
4import javax.swing.JPanel;  
5import javax.swing.border.EmptyBorder;  
6import javax.swing.JTextField;  
7import javax.swing.JLabel;  
8import java.awt.event.KeyAdapter;  
9import java.awt.event.KeyEvent;  
10import java.util.StringTokenizer;  
11import javax.swing.JTextPane;  
12public class test2 extends JFrame {  
13    private JPanel contentPane;  
14    private JTextPane numberField;  
15    private JTextField sumField;  
16    private JTextField aveField;  
17    public static void main(String[] args) {  
18        EventQueue.invokeLater(new Runnable() {  
19            public void run() {  
20                try {  
21                    test2 frame = new test2();  
22                    frame.setVisible(true);  
23                } catch (Exception e) {  
24                    e.printStackTrace();  
25                }  
26            }  
27        });  
28    }  
29    public test2() {  
30        super("第二次实验");  
31        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
32        setBounds(100, 100, 395, 271);  
33        contentPane = new JPanel();  
34        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));  
35        setContentPane(contentPane);  
36        contentPane.setLayout(null);  
37        numberField = new JTextPane();  
38        numberField.addKeyListener(new KeyAdapter() {  
39            @Override  
40            public void keyTyped(KeyEvent e) {  
41                double sum = 0,avg = 0;  
42                switch(e.getKeyChar()) {  
43                case KeyEvent.VK_SPACE: //分隔符为空格  
44                case KeyEvent.VK_COMMA: //分隔符为英文逗号  
45                case KeyEvent.VK_ENTER: //分隔符为回车  
46                    String str=numberField.getText();  
47                    StringTokenizer analyze = new StringTokenizer(str," ,n");  
48                    int allnum=analyze.countTokens();  
49                    for(int i =0;i<allnum;i++) {  
50                        String temp = analyze.nextToken();  //字符串分割解析工具  
51                        sum = sum+Double.parseDouble(temp);  
52                    }  
53                    if(allnum>0) {  
54                        avg = sum/allnum;  
55                    }else {  
56                        avg = 0;  
57                    }  
58                    sumField.setText(Double.toString(sum));  
59                    aveField.setText(Double.toString(avg));  
60                }  
61            }  
62        });  
63        numberField.setBounds(14, 13, 349, 101);  
64        contentPane.add(numberField);  
65        JLabel label = new JLabel("和 值");  
66        label.setBounds(57, 140, 72, 18);  
67        contentPane.add(label);  
68        JLabel label_1 = new JLabel("平均值");  
69        label_1.setBounds(57, 182, 72, 18);  
70        contentPane.add(label_1);  
71        sumField = new JTextField();  
72        sumField.setBounds(130, 137, 233, 24);  
73        contentPane.add(sumField);  
74        sumField.setColumns(10);  
75        aveField = new JTextField();  
76        aveField.setBounds(130, 179, 233, 24);  
77        contentPane.add(aveField);  
78        aveField.setColumns(10);  
79    }  
80}  

4. 运行结果:


您的支持就是我们前进的动力


本篇文章来源于微信公众号: 计科