首页 > 其他分享 >实例046 数组的下标界限

实例046 数组的下标界限

时间:2023-05-04 18:45:34浏览次数:31  
标签:index 下标 textArea add 实例 new 046 textField

以下是使用Java文本框控件实现Java数组的下标界限完整代码,包括详细注释:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends JFrame implements ActionListener {
    // 定义窗口中需要用到的组件
    private JTextField textField;
    private JTextArea textArea;

    public static void main(String[] args) {
        new Test();
    }

    // 构造函数,在其中初始化窗口和组件,并添加事件监听器
    public Test() {
        setTitle("Array Index Limit");
        setSize(400, 300);

        // 创建一个面板并将其设置为流式布局(FlowLayout)
        JPanel panel = new JPanel(new FlowLayout());

        // 添加输入框、按钮和输出区域到面板上
        JLabel label = new JLabel("Enter an array index:");
        panel.add(label);

        textField = new JTextField(10); // 输入框可以容纳10个字符宽度
        panel.add(textField);

        JButton button = new JButton("Submit");
        button.addActionListener(this);     // 将当前对象作为事件处理程序注册给按钮
        panel.add(button);

        textArea = new JTextArea();
        textArea.setEditable(false);// 输出区不可编辑
        JScrollPane scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);// 设置滚动条出现条件
        scrollPane.setPreferredSize(getSize());
        add(panel, "North");// 面板放在北边
        add(scrollPane, "Center");// 滑块放在中间
        setVisible(true);// 显示窗口
    }

    // 事件处理程序,当按钮被点击时执行该方法
    public void actionPerformed(ActionEvent e) {
        try {
            int index = Integer.parseInt(textField.getText()); // 将输入框中的文本转换为整数类型

            int[] arr = {1,45,12,234,345,234,12,123,123}; // 创建一个长度为10的数组

            if (index < 0 || index >= arr.length) {     // 判断下标是否越界
                throw new ArrayIndexOutOfBoundsException("Array Index Out Of Bounds!");
            } else {
                textArea.setText("The array element at position " + index + " is: " + arr[index]);
            }
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(this, "Please enter a valid integer!", "Error", JOptionPane.ERROR_MESSAGE);
        } catch (ArrayIndexOutOfBoundsException ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        } finally {
            textField.setText("");      // 清空输入框内容
            textField.requestFocus();
        }// 输入焦点回到文本域
    }
}

在上述代码中,我们首先创建了一个 ArrayIndexLimit 类,并继承自 JFrame。然后,在构造函数里面初始化了窗口和组件,并添加了事件监听器。

其中使用 JPanel 来容纳需要用到的控件(包括 JLabel、 JTextField 和 JButton),并将其设置成流式布局(FlowLayout)。接着通过 add() 方法把这些控件加入进去。

最后还要注意一点:由于输出区可能会出现滚动条,因此我们采用 JScrollPane 控件来包装 JTextArea,以便在需要时出现滚动条。

事件处理程序 actionPerformed() 方法中的代码主要是实现了对输入框内容进行判断,并根据下标是否越界输出相应信息。如果用户没有正确地输入整数,则会弹出一个错误提示窗口;而当数组下标超过范围时则抛出 ArrayIndexOutOfBoundsException 异常并显示相关消息。最后,在 finally 块里面清空文本域和将焦点重新设置到文本框上方便再次使用。

在这个程序中,我们使用了 Java 的文本框控件 JTextField 和 JTextArea。其中,JTextField 是一个单行的输入框组件;而 JTextArea 则是多行的输出区域。

在构造函数里面初始化窗口和组件时,我们通过 new 关键字创建了两个对象:textField 和 textArea,并设置它们各自的属性(如大小、是否可编辑等)。然后将其添加到 JPanel 中并最终加入 JFrame 窗口中显示出来。

事件处理程序 actionPerformed() 方法则实现了对用户输入内容进行判断,并根据情况输出相应信息。具体地说,在该方法内部:

  1. 首先尝试把用户从 textField 输入进去的字符串转换成整数类型 index。
  2. 接着定义一个长度为 10 的数组 arr 并检查下标是否越界:
    • 如果超过范围,则会抛出 ArrayIndexOutOfBoundsException 异常;
    • 否则就可以直接访问指定位置上元素值并用 setText() 方法更新 textArea 显示结果。
  3. 在 try-catch 块结构之外还有一段代码清空 textField 内容以便再次使用,并且重新聚焦于此处方便新一轮操作开始。

总之,在这份完整代码示例当中展示给大家如何利用Java Swing 提供好看又易于交互式开发工具包快速搭建简洁美观但功能强大GUI 应用程式。

标签:index,下标,textArea,add,实例,new,046,textField
From: https://www.cnblogs.com/SwapEnd/p/17372153.html

相关文章

  • 实例 042 获取一维数组最小值
      你可以使用以下代码来获取一维数组中的最小值:int[]arr={5,3,9,1,7};intmin=arr[0];for(inti=1;i<arr.length;i++){if(arr[i]<min){min=arr[i];}}System.out.println("最小值为:"+min);  在上面的代码中,我们首先初始......
  • unity 之简单的实例(clone)对象池
    usingSystem;usingSystem.Collections.Generic;usingUnityEngine;publicclassGameObjectPoolEntity{publicQueue<GameObject>QueueList;publicstringName;publicGameObjectPool0bj;}publicclassQGGameObjectPool:IDisposable......
  • 关于java中的多态和对实例化对象的一些理解
    java面向对象三大特征即为:继承封装多态。而多态需要三大必要条件。分别是:继承、方法重写、父类引用指向子类对象。我们先一个一个来理解。1、首先是继承和重写。这个很简单。因为多态就是建立在不同的重写之上的。也就是说多态就是在使用着一个方法的不同重写。而重写又是依赖着......
  • 实例化对象 A a = new A();
    "new"在Java中代表实例化的意思,Aa=newA()代表实例化了一个对象a,这个对象a属于A类.可以认为A是一个抽象概念,对象a是一个实体(存储于内存),等式左边实际上就是用类A定义对象a,等式右边就是创造对象a的过程.Aa;   是定义一个类型为A的对象。new实例化a=n......
  • Android获取其他包的Context实例,…
    Android中有Context的概念,想必大家都知道。Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。如果我们得到了一个包的Context对象,那我们基本上可以做这个包自己能做的大部分事情。         那我们能得到吗?很高......
  • 本实例实现了android上传手机图片…
    本实例实现了android上传手机图片至服务器,服务器进行保存服务器servlet代码Java代码 1.doPost(HttpServletRequestrequest,HttpServletResponseresponse)2.throwsServletException,IOException{3.4.......
  • IOS实例变量和属性
    在IOS编程中,很多人没有理解实例变量与属性的区别,我根据自己的经验,这这里与大家分享下这里面的区别,下面我写一个简单的例子:.h@interfaceMyController:UIViewController{UILabel*_myLabel;//这里是实例变量声明}@property(nonatomic,retain)UILabel*myLabe......
  • Selenium+Java+Chrome进行web自动化实例
    Selenium+Java+Chrome进行web自动化实例   这是我第一次在项目中使用JavaSpring启动,因为我主要使用C#,我需要从blobURL路径读取文件并将一些字符串数据(如密钥)附加到同一个文件中。在我的API下载文件之前流。 以下是我尝试过的方法: FileOutputStream/InputStream:抛......
  • 超大文件上传和断点续传的实例解析
    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NET页面设计:TextBox和Button按钮。TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹......
  • 从实例出发,了解单例模式和静态块
    就算你没有用到过其他的设计模式,但是单例模式你肯定接触过,比如,Spring中bean默认就是单例模式的,所有用到这个bean的实例其实都是同一个。单例模式的使用场景什么是单例模式呢,单例模式(Singleton)又叫单态模式,它出现目的是为了保证一个类在系统中只有一个实例,并提供一个访问它的......