Swing程序设计(10)列表框,文本框,文本域,密码框

文章目录


前言

该篇文章简单介绍了Java中Swing组件里的列表框、文本框、密码框。


一、列表框

列表框(JList)相比下拉框,自身只是在窗体上占据固定的大小。如果需要完全显示列表框信息,可以将列表框添加于滚动面板中。

JList常用的构造方法如下:

第一种方法:直接实例化,之后用setListData()方法添加对象

java 复制代码
public void JList();
//初始化列表框对象后,使用 setListData()方法添加对象

初始化列表框对象后,使用setListData()方法添加对象

实例展示:

java 复制代码
import javax.swing.JFrame;
import javax.swing.JList;
import java.awt.*;

public class MyList extends JFrame{
    public MyList(){
        Container c = getContentPane();
        
        //核心代码以下
        JList<String> jl = new JList<>();
        String str[] ={"列表1","列表2","列表3","列表4"};
        jl.setListData(str);
        //使用该方法设置列表数据,引用对象应为数组类型

        c.add(jl);

        setBounds(100,100,100,100);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        MyList my = new MyList();
    }
}

运行结果:

第二种方法: 在实例化JList列表框时,直接引用,数组类型的变量,至列表中。

java 复制代码
public void JList(Object[] listDate);
//直接在JList实例化时,引用数组类型的对象,填充列表框

与其他代码大差不差,核心代码差别为下:

java 复制代码
String str[] ={"列表1","列表2","列表3","列表4"};

JList<String> jl = new JList<>(str);
//创建数组后直接添加于列表框之中

运行结果一样

第三种方法:在实例化JList列表框时,直接引用,向量类的对象,至列表中。

java 复制代码
public void JList(Vector listDate);

核心代码差别为下:

java 复制代码
Vector<String> contents = new Vector<>();
//列表框中引用了Vector对象
JList<String> jl = new JList<>(contents);

//随时添加新的列表数据
contents.add("列表1");
contents.add("列表2");
contents.add("列表3");
contents.add("列表4");

运行结果:

第四种方法:在实例化JList列表框时,实例化ListModel类,至列表中

java 复制代码
public void JList(ListModel dateModel);

在本类中创建一个MyListModel类,继承,"抽象列表模型类"。在该类中创建一个数组对象,然后实现该抽象类的两个方法,getElement()方法和getSize()方法。

**JList类会在内部自动调用getElementAt() 方法获取列表的每个元素。**getElementAt() 方法会根据索引值返回对应位置的元素内容。同样,getSize() 方法用于告诉JList 数据模型中有多少个元素。

实例展示:

java 复制代码
public class MyList extends JFrame{
    public MyList(){
        Container c = getContentPane();
        
        JList<String> jl = new JList<>(new MyListModle());
        //实例化JList列表框时,实例化ListModel类

        c.add(jl);

        setBounds(100,100,100,100);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

//创建列表模型,继承抽象类,实现两个抽象方法
class MyListModle extends AbstractListModel<String>{

    private String contents[] ={"列表1","列表2","列表3","列表4"};
    
    public String getElementAt(int x){    //JList类会在内部调用这个方法,获取列表的每个元素
        if(x<contents.length){
            return contents[x++];
        }else{
            return null;
        }
    }

    public int getSize(){
        return contents.length;
    }
}

运行结果:

二、文本框(域)

1.文本框

文本框(JTextField)是用于显示或编辑一个单行文本框体。

JTextField常用构造方法如下:

public JTextField() 直接创建一行可输入的文本框

public JTextField(String text) 创建一行有"text"输入内容的文本框

实例展示:

java 复制代码
//···········省略代码··················
        
JTextField jt = new JTextField("你好");

//···········省略代码··················

2.文本域

文本域(JTextArea)即为一个文本文件,可以任意输入内容。

JTextArea常用的构造方式如下:

public JTextArea() 直接创建可输入的文本域

public JTextArea(String text) 创建有"text"输入内容的文本域

setLineWrap()方法 将该方法的参数设置为ture,文本域就会自动换行,触边换行

实例展示:

java 复制代码
import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.*;

public class MyJTextArea extends JFrame{
    public MyJTextArea(){
        Container c = getContentPane();
        
        JTextArea jt = new JTextArea("文本域",6,6);
        jt.setLineWrap(true);  // setLineWarp()方法 可以实现自动换行 触边换行

        c.add(jt);

        setBounds(100,100,100,200);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        MyJTextArea my = new MyJTextArea();
    }
}

运行结果:

三、密码框

密码框(JPasswordField)与文本框唯一不同的是,密码框将用户输入的字符串以某种符号进行加密,使用 setEchoChar() 方法可以改变密码框的回显字符。

JPasswordField常用的构造方法如下:

public JTextArea() 直接创建可输入的密码框

public JTextArea(String text) 创建有"****"输入内容的密码框

实例展示:

java 复制代码
//*********省略代码***********

JPasswordField jp = new JPasswordField( "1234");
//创建了一个有输入内容,显示为****

jp.setEchoChar('#');
//回显字符由'*'变为'#',显示为了####

//*********省略代码***********

输出结果:


总结

该篇提供了一些关于"框"的代码,使用这些框是前端的基础,只有记住这些框的名字即可,再实例化后,添加进容器对象,其他的代码基本不会改变。

相关推荐
fanruitian几秒前
python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV
开发语言·python·机器学习
AlanAshley7 分钟前
无 SIM 卡也能打 110?手机紧急呼叫能力的软硬件技术探究
开发语言·智能手机·php
鬼手点金8 分钟前
Skills:领域能力的可组合单元
java·人工智能·笔记·自动化·1024程序员节
modelmd12 分钟前
Go 切片、映射常见使用场景
开发语言·后端·golang
dialect_8 小时前
KMP算法
开发语言·c++·算法
captain3769 小时前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis
Novproxy_Z9 小时前
商用代理避坑:如何识别商家拿机房 IP 冒充住宅 IP
java·网络·tcp/ip
总要学点什么9 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
文丑颜不良啊10 小时前
LeetCode1481~1500题目解析
java·leetcode
2601_9628857210 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring