JAVA小项目(2)——制作控件
2016-01-19 00:34
393 查看
今天对着源码写了一个控件的小项目,第一次涉及到这些包,大部分略感陌生,有一点引用图片的心得:
1、new ImageIcon("C:/workspace se/20160118_Icon/images/1.gif")
一般在这里出现空指针的问题,大多因为路径的错误。我用绝对路径成功显示了图片。
在网上看到另一种用相对路径的方法:getClass().getClassLoader().getResource(“1.gif的相对路劲”),
但是这么写会出现空指针问题,该问题暂时遗留,未解决。
运行效果图:
代码如下:
1、new ImageIcon("C:/workspace se/20160118_Icon/images/1.gif")
一般在这里出现空指针的问题,大多因为路径的错误。我用绝对路径成功显示了图片。
在网上看到另一种用相对路径的方法:getClass().getClassLoader().getResource(“1.gif的相对路劲”),
但是这么写会出现空指针问题,该问题暂时遗留,未解决。
运行效果图:
代码如下:
package Icon; 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; //带图标下拉框的单元绘制器,从JLabel类扩展,实现ListCellRenderer接口 public class IconRenderer extends JLabel implements ListCellRenderer{ public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus){ Object[] cell = (Object[])obj; //得到行的参数 setIcon((Icon)cell[0]); //设置图标 setText(cell[1].toString()); //设置文本 setToolTipText(cell[2].toString()); //设置提示文本 setBorder(new LineBorder(Color.WHITE)); //设置边界 if (sel){ setForeground(Color.MAGENTA); //如果未选中,设置文本颜色为默认色 }else{ setForeground(list.getForeground()); } return this; } }
package Icon; import java.awt.BorderLayout; 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 IconComboBoxDemo extends JFrame{ JLabel iconLabel = null; //用来相应列表框选择的变化;JLabel() 创建无图像并且其标题为空字符串的 JLabel。 JComboBox iconComBox = null; //定制的选择下拉框 //定义Object二维数组,用于初始化下拉框,参数依次为图标,显示文本,提示文本 public IconComboBoxDemo(){ Object[][] obj = { //JFrame.class.getClass().getClassLoader().getResource {new ImageIcon("C:/workspace se/20160118_Icon/images/1.gif"), "旅游", "提供旅游的最新信息"}, {new ImageIcon("C:/workspace se/20160118_Icon/images/2.gif"), "音乐", "提供最新的音乐资讯,古典的、流行的..."}, {new ImageIcon("C:/workspace se/20160118_Icon/images/3.gif"), "聊天", "与朋友聊天"}, {new ImageIcon("C:/workspace se/20160118_Icon/images/4.gif"), "影视", "影视娱乐"}, {new ImageIcon("C:/workspace se/20160118_Icon/images/5.gif"), "家居", "家居世界"}, }; //初始化下拉框 JComboBox iconComboBox = new JComboBox<>(); iconComboBox.setMaximumRowCount(3); //设置最大可视行数 iconComboBox.setRenderer(new IconRenderer()); //设置单元绘制器 for (int i = 0; i < obj.length; i++){ //增加数组中的所有元素到下拉框中 iconComboBox.addItem(obj[i]); } //初始化iconLabel信息 iconLabel = new JLabel(); //下拉框事件处理,用匿名类实现 iconComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt){ //处理事件 Object[] obj = (Object[])iconComboBox.getSelectedItem(); //得到选择的内容,此处为一维数组 iconLabel.setIcon((Icon)obj[0]); //设置iconLabel的图标 iconLabel.setText(obj[1].toString()); //设置iconLabel的文本 } }); //增加组件到主窗体上 this.getContentPane().setLayout(new BorderLayout()); //设置布局管理器 this.getContentPane().add(iconComboBox, BorderLayout.NORTH); //在上方增加下拉框 this.getContentPane().add(iconLabel, BorderLayout.CENTER); //在中间增加iconLabel,用于响应选择的变化 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 this.setSize(350, 260); //设置窗口尺寸 this.setVisible(true); //显示窗口 } public static void main(String[] args){ new IconComboBoxDemo(); } }
相关文章推荐
- 如何调优JVM - 优化Java虚拟机(大全+实例)
- Java 多态
- 【android学习4】Eclipse中Clean作用
- JVM1小时1次FGC调优
- 通过委派模式包装一个RxJavaCallAdapterFactory
- 第二章 IoC 之 2.2 IoC容器基本原理
- rpm方式安装java
- java简单实现文件的创建 读写
- Eclipse Java注释模板设置详解【个人】
- java动态代理(JDK和cglib)
- Java 延时常见的几种方法
- java web 项目 java.lang.ClassNotFoundException 异常解决方
- 招聘中高级Java工程师
- java 基本数据所占内存大小
- java重复造轮子系列篇------String
- java重复造轮子系列篇------发送邮件sendEmail
- java重复造轮子系列篇------File
- java重复造轮子系列篇------身份证IdcardUtils
- java重复造轮子系列篇------Json
- java重复造轮子系列篇-----时间date