Java 入门图形用户界面设计之列表框JList

 更新时间:2022年02月16日 14:38:58   作者:小旺不正经  
图形界面(简称GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,本篇精讲Java语言中关于图形用户界面的列表框JList

Java程序设计 图形用户界面 【十一】列表框JList

列表框JList

JList常用方法

方法作用
public JList(ListModel dataModel)根据ListModel构造JList
public JList(Object[] listData)根据对象数组构造JList
public JList(Vector<?> listData)根据一个Vector构造JList
public void setSelectionMode(int selectionMode)设置选择模式,是多选还是单选
public ListModel getModel()返回列表框的列表模型
public int[] getSelectedIndices()返回所选择的全部数组

可以通过ListSelectionModel接口完成列表框是多选还是单选

ListSelectionModel定义的常量

常量作用
static final int MULTIPLE_INTERVAL_SELECTION一次选择一个或多个连续的索引范围
static final int SINGLE_INTERVAL_SELECTION一次选择一个连续范围的值
static final int SINGLE_SELECTION一次选择一个值
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;

class MyList{
    private JFrame frame = new JFrame("一");
    private Container cont = frame.getContentPane();
    private JList list1 = null;
    private JList list2 = null;
    public MyList(){
        this.frame.setLayout(new GridLayout(1,3));
        String n[] = {"A","B","C","D","E","F"};
        Vector<String> v = new Vector<String>();
        v.add("A");
        v.add("B");
        v.add("C");
        this.list1 = new JList(n);
        this.list2 = new JList(v);
        list1.setBorder(BorderFactory.createTitledBorder("请选择"));
        list2.setBorder(BorderFactory.createTitledBorder("请选择"));
        list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        cont.add(this.list1);
        cont.add(this.list2);
        this.frame.setSize(300,200);
        this.frame.setVisible(true);
        this.frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(1);
            }
        });
    }
}
public class Hello {
    public static void main(String[] args) {
        new MyList();
    }
}

image-20220214170217329

第一个JList通过字符串数组设置列表的内容,并通过setSelectionMode()方法设置一次性可以选择多个选项

第二个JList通过Vector设置列表的内容,并通过setSelectionMode()方法将其设置成每次只能选择一个选项

使用ListModel构造JList

ListModel是一个专门用于创建JList列表内容操作的接口

方法作用
void addListDataListener(ListDataListener l)加入数据改变事件的监听
void removeListDataListener(ListDataListener l)加入数据删除时的监听
Object getElementAt(int index)返回指定索引处的内容
int getSize()返回列表长度
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class MyListModel extends AbstractListModel{
    private String n[]={"A","B","C","D"};

    @Override
    public int getSize() {
        return this.n.length;
    }

    public Object getElementAt(int ind){
        if(ind<this.n.length){
            return this.n[ind];
        }else {
            return null;
        }
    }
}
class MyList{
    private JFrame frame = new JFrame("一");
    private Container cont = frame.getContentPane();
    private JList list1 =null;
    public MyList(){
        this.list1 = new JList(new MyListModel());
        list1.setBorder(BorderFactory.createTitledBorder("请选择"));
        list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        cont.add(this.list1);
        this.frame.setSize(300,200);
        this.frame.setVisible(true);
        this.frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(1);
            }
        });
    }
}
public class Hello {
    public static void main(String[] args) {
        new MyList();
    }
}

image-20220214173717297

JList事件处理

使用ListSelectionListener的监听接口实现对JList中所选项的监听

ListSelectionListener接口定义的方法

方法作用
void valueChanged(ListSelectionEvent e)当值发生改变时调用

ListSelectionEvent的常用方法

方法作用
public int getFirsIndex()返回选择的第1个选项的索引值
public int getLastIndex()返回选择的最后1个选项的索引值

对JList进行监听

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class MyListModel extends AbstractListModel{
    private String n[]={"A","B","C","D"};

    @Override
    public int getSize() {
        return this.n.length;
    }

    public Object getElementAt(int ind){
        if(ind<this.n.length){
            return this.n[ind];
        }else {
            return null;
        }
    }
}
class MyList implements ListSelectionListener {
    private JFrame frame = new JFrame("一");
    private Container cont = frame.getContentPane();
    private JList list1 =null;
    public MyList(){
        this.list1 = new JList(new MyListModel());
        list1.setBorder(BorderFactory.createTitledBorder("请选择"));
        list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        list1.addListSelectionListener(this);
        cont.add(this.list1);
        this.frame.setSize(300,200);
        this.frame.setVisible(true);
        this.frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(1);
            }
        });
    }

    @Override
    public void valueChanged(ListSelectionEvent e) {
        int temp[] = list1.getSelectedIndices();
        System.out.print("选的的内容是:");
        for(int i:temp){
            System.out.print(list1.getModel().getElementAt(i)+",");
        }
        System.out.println();
    }
}
public class Hello {
    public static void main(String[] args) {
        new MyList();
    }
}

image-20220214180931894

image-20220214180940913

到此这篇关于Java 入门图形用户界面设计之列表框JList的文章就介绍到这了,更多相关Java 列表框JList内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java之String、StringBuffer、StringBuilder的区别分析

    Java之String、StringBuffer、StringBuilder的区别分析

    今天搞安卓在看书的时候遇到了StringBuilder这个类型的东东,有点小迷,不知道它跟string、stringbuffer的关系式怎么样的,赶快查阅相关资料,了解了个大概,拿出来分享一下
    2012-11-11
  • Java元组类型javatuples使用实例

    Java元组类型javatuples使用实例

    这篇文章主要介绍了Java元组类型javatuples使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • springboot 集成cas5.3 实现sso单点登录详细流程

    springboot 集成cas5.3 实现sso单点登录详细流程

    SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录是目前比较流行的企业业务整合的解决方案之一,本文给大家介绍springboot 集成cas5.3 实现sso单点登录功能,感兴趣的朋友一起看看吧
    2021-10-10
  • Java中try-catch的使用及注意细节

    Java中try-catch的使用及注意细节

    现在有很多的语言都支持try-catch,比如常见的就是c++,java等,这篇文章主要给大家介绍了关于Java中try-catch的使用及注意细节的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 通过Spring Boot + Mybatis + Redis快速搭建现代化Web项目

    通过Spring Boot + Mybatis + Redis快速搭建现代化Web项目

    本篇文章介绍了如何通过Spring Boot、Mybatis以及Redis快速搭建一个现代化的Web项目,并且同时介绍了如何在Spring Boot下优雅地书写单元测试来保证我们的代码质量。具体内容详情大家通过本文学习下吧
    2017-12-12
  • 关于Intellij idea 报错:Error : java 不支持发行版本5的问题

    关于Intellij idea 报错:Error : java 不支持发行版本5的问题

    这篇文章主要介绍了关于Intellij idea 报错:Error : java 不支持发行版本5的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • SpringBoot实现quartz定时任务可视化管理功能

    SpringBoot实现quartz定时任务可视化管理功能

    这篇文章主要介绍了SpringBoot实现quartz定时任务可视化管理功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • java文件如何统计字母出现的次数和百分比

    java文件如何统计字母出现的次数和百分比

    这篇文章主要介绍了java文件如何统计字母出现的次数和百分比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • JMeter中的后端监听器的实现

    JMeter中的后端监听器的实现

    本文主要介绍了JMeter中的后端监听器的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java容器HashMap与HashTable详解

    Java容器HashMap与HashTable详解

    本文主要介绍HashMap 和 Hashtable的工作原理和使用方法,有兴趣的朋友可以参考
    2017-04-04

最新评论