图形用户界面

import java.awt.BorderLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ImageMain extends JFrame{

    private JLabel label;
    private JComboBox comboBox;
    //二维数组的建立,用于保存图片,及相关信息
    /**
     * 1,Object[][]obj=new {{},{},{}};二维数组,及外面最大的花括弧是第一维,其长度为obj.length
     *       里面的小的花括号为第二维,里面的长度是obj【i】.length
     * 2,ImageIcon(url,text1,text2)是图片类
     *         url是图片的路径
     *         text1是图片名称
     *         text2是图片的说明
     */
    Object[][]obj={
            {new ImageIcon("J:\\workSpace\\jase100\\src\\ch01\\setion1\\1.gif"),"旅游","提供旅游的最新信息"},
                 {new ImageIcon("J:\\workSpace\\jase100\\src\\ch01\\setion1\\2.gif"),"音乐","提供最新的音乐资讯,古典的、流行的..."},
                 {new ImageIcon("J:\\workSpace\\jase100\\src\\ch01\\setion1\\3.gif"),"聊天","与朋友聊天"},
                 {new ImageIcon("J:\\workSpace\\jase100\\src\\ch01\\setion1\\4.gif"),"影视","影视娱乐"},
                 {new ImageIcon("J:\\workSpace\\jase100\\src\\ch01\\setion1\\5.gif"),"家居","家居世界"},
             };
    //在构造方法中初始化
    public ImageMain() throws HeadlessException {
        comboBox=new JComboBox();
        //设置JComboBox可见页面最大显示3个选项
        comboBox.setMaximumRowCount(3);
        /**
         * 重点
         * 1,这里是设置渲染器
         * 2,设置的类是自己新建的类,此类继承了JLabel,实现了ListCellRender
         * 3,自己可以按自己的要求来设计新建类,以显示出自己喜欢的界面
         */
        comboBox.setRenderer(new ImageaRenderer());
        //为JComboBox添加选项
        for(int i=0;i<obj.length;i++){
            comboBox.addItem(obj[i]);
        }
        label=new JLabel();
        /**
         * 添加监听(这里是行为)
         * 通过获得JComboBox选项中的内容在面板中显示
         *
         */
        comboBox.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
            Object[]obj1=(Object[])comboBox.getSelectedItem();
//            for(Object o:obj1){
//                System.out.println("*******************************************"+o);
//            }
            label.setIcon((Icon)obj1[0]);
            label.setText((String)obj1[2]);
            }
        });
        //最后是设置JComboBox和JLabel的相关参数。
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(BorderLayout.NORTH, comboBox);
        this.getContentPane().add(BorderLayout.CENTER, label);
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.setSize(350, 260);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        ImageMain image=new ImageMain();
    }

}

 

***************************ImageRenderer

import java.awt.Color;
import java.awt.Component;

import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.border.LineBorder;
/**
 * 此类是继承了JLable实现了ListCellRender接口,所以本质上兼有JLable和ListCellRender的双重作用
 * 调用此类,相当于使用了JLabel类
 *
 */
public class ImageaRenderer extends JLabel implements ListCellRenderer {
/**
 * JList 是一个组间的列表相关内容
 * Object,返回使用本对象的对象
 *  index - 单元格索引。
    isSelected - 如果选择了指定的单元格,则为 true。
    cellHasFocus - 如果指定的单元格拥有焦点,则为 true。
 */
    public Component getListCellRendererComponent(JList arg0, Object arg1,
            int arg2, boolean arg3, boolean arg4) {
       
        Object []obj=(Object[])arg1;
        //这里是JLabel里的JLabel设置
        setIcon((Icon)obj[0]);
        setText((String)obj[1]);
        setToolTipText(obj[2].toString());
        setBorder(new LineBorder(Color.RED));
        if(arg3){
            setForeground(Color.GREEN);
        }else{
            setForeground(arg0.getForeground());
        }
        return this;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值