天天看点

JAVA第三次作业——Swing组件中JList的运用0x00  简述0x01  Jframe框架0x02  构造一个简单的JList0x03  为选项添加相应动作0x04  小结

0x00  简述

Swing是GUI(图形用户界面)开发工具包,内容丰富,简单易用,所以本篇文章中只编写Swing中的Jlist组件,其他Swing中的组件相关内容这里笔者就不介绍了,文章中未涉及的组件读者请自行去查阅相关资料。

0x01  Jframe框架

九层之台,起于累土,我们的程序也是如此,要先从地基打起,Jframe就是我们的地基。

JFrame是一个容器,它是各种Swing组件的前置条件,所有的Swing组件都在这上面呈现。下面是一个简单的Jframe例子:

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class JframeTest {

    public void CreateJFrame() {
        JFrame jf = new JFrame("JframeTest");        // 设置窗口标题
        jf.setVisible(true);        // 设置窗体可视
        jf.setSize(400, 400);        // 设置窗体大小
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);        
    }

    public static void main(String[] args) {
        new JframeTest().CreateJFrame();        
    }
}

           

运行后如图所示

JAVA第三次作业——Swing组件中JList的运用0x00  简述0x01  Jframe框架0x02  构造一个简单的JList0x03  为选项添加相应动作0x04  小结

这样,我们就有了一个可以用来展示的窗口,接下来我们开始详细介绍Jlist组件的用法。

0x02  构造一个简单的JList

使用JList函数便可以很轻易的创建一个列表

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;

import javax.swing.*;

public class JList1 {

    public static void main(String[] args) {
        JFrame f=new JFrame("JListTest");
        Container contentpane=f.getContentPane();
        f.setVisible(true);        // 设置窗体可视
        f.setSize(400, 400);        // 设置窗体大小
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.setLayout(new GridLayout(2, 1));		      	//设置列表行和列数
        String[] s=new String[]{"面向对象程序设计","数据结构","毛泽东思想和中国特色社会主义理论体系概论","离散数学","大学物理"};
        Vector v=new Vector();
        v.addElement("周景");
        v.addElement("何可可");
        v.addElement("莫阳生");
        v.addElement("朱永娇");
        v.addElement("莫云飞");

        JList jList=new JList(s);
        jList.setBorder(BorderFactory.createTitledBorder("您最喜欢哪门课呢"));

        JList jList2=new JList(v);
        jList2.setBorder(BorderFactory.createTitledBorder("你最喜欢哪位老师呢"));
        contentpane.add(new JScrollPane(jList));
        contentpane.add(new JScrollPane(jList2));
        contentpane.add(jList2);
        f.pack();
        f.show();
        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }

        });
    }
}
           

运行后如图所示

JAVA第三次作业——Swing组件中JList的运用0x00  简述0x01  Jframe框架0x02  构造一个简单的JList0x03  为选项添加相应动作0x04  小结

在上述代码中,我们可以看到JList既可以用数组Object[]也可以用集合Vector<?>方法来创建。而用集合方法创建的列表无法改变项目的数量。

由于直接创建的列表没有滚动条,会对用户的使用产生麻烦,所以上面的列表都是在作为 JScrollPane 的视口视图下实现的。

0x03  为选项添加相应动作

当用户选中其中一项时,我们想让用户了解一些关于选中项目的一些信息,这时候就要用上监听器。

jList.addMouseListener(new MouseAdapter() //列表框添加鼠标事件
        {
            public void mousePressed(MouseEvent e)
            {


                int i = jList.getSelectedIndex() + 1;
                Object path[] = v.toArray();
                if(i == 1)
                {
                    jList.setBackground(Color.white); //设置背景色
                    System.out.println("已选择第" + i + "项");
                }
                if(i == 2)
                {
                    jList.setBackground(new Color(183,83,168));
                    System.out.println("已选择第" + i + "项");
                }
                if(i == 3)
                {
                    jList.setBackground(new Color(245, 129, 35));
                    System.out.println("已选择第" + i + "项");
                }
                if(i == 4)
                {
                    jList.setBackground(new Color(108,72,78));
                    System.out.println("已选择第" + i + "项");
                }
                if(i == 5)
                {
                    jList.setBackground(new Color(46, 129, 48));
                    System.out.println("已选择第" + i  + "项");
                }

            }
        }


           

运行后如图所示

JAVA第三次作业——Swing组件中JList的运用0x00  简述0x01  Jframe框架0x02  构造一个简单的JList0x03  为选项添加相应动作0x04  小结

由于笔者水平有限暂无法修改JList背景图片,笔者在这只能将就修改其背景颜色,如读者技术高超或感兴趣的话,可以参考小结中给予的链接。

通过为每个选项添加监听器的方法,我们改变了背景颜色来提醒用户,控制台输出相应数据来为程序下一步动作提供条件。

0x04  小结

本章专门介绍了JList的使用方法,JList和JCombobox组件从本质上说是类似的,它们都是提供了一系列列表数据供用户选择,从表现形式上可以把JCombobox看做一个JList和一个JTextField组成,通过callback机制回调选择项目。JList并没有复杂的UI,当然也就没有复杂的画面了,所以对于提高JList的画面表现,一般需要继承ListCellRenderer加入自己的表现样式,当然笔者在查阅相关方法时已神志不清,故未在文中实现,实属可惜。

参考及引用:

JList (Java Platform SE 6)官方介绍

JList控件使用图片+文字

JList的使用和事件相应

我的老师周景

笔者的网站