0 0

java Swing JComboBox下拉框显示图片问题10

public class mousergister extends JPanel {
	JPanel jp;
	JComboBox setImg;
	ComboBoxRenderer renderer;
	
	public static void main(String[] args) {
		new mousergister();
	}

	public mousergister() {
		BaseFrame bf=new BaseFrame("用户注册");
		bf.add(this);				
		this.setLayout(null);


		renderer = new ComboBoxRenderer();
		renderer.setPreferredSize(new Dimension(100, 50));
		
		Object elements[][] = {
		        { new MyIcon("images/1.jpg",this)},
		        { new MyIcon("images/2.gif",this) },
		        { new MyIcon("images/3.jpg",this)},
		        };

		setImg = new JComboBox(elements);
		setImg.setRenderer(renderer);			
		setImg.setBounds(120, 25, 75, 60);
		add(setImg);

		bf.setLocation(500, 100);// 设置窗口在屏幕的位置
		bf.setSize(320, 420);
		bf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		bf.setResizable(false);// 设置游戏窗口大小不可改变
		bf.setVisible(true);

	}

	private class ComboBoxRenderer extends JLabel implements ListCellRenderer {

		// 这样要是实现接口的方法:

		/*
		 * 
		 * This method finds the image and text corresponding to the selected
		 * 
		 * value and returns the label, set up to display the text and image.
		 */

		@Override
		public Component getListCellRendererComponent(JList list, Object value,
				int index, boolean isSelected, boolean cellHasFocus) {

			ImageIcon image=null;

			 if (value instanceof Object[]) {
				 Object[] values = (Object[]) value;			     
			      image = (ImageIcon)values[0];
			    }
			    if (image != null) {
			    	
			      this.setIcon(image);
			    }
			    return this;
			  }			 
	}
		
	private class MyIcon extends ImageIcon{
		private Image m;
		private String str;
		private mousergister jp;
			
		public MyIcon(String str,mousergister jp) {
			Toolkit tool;
			tool = jp.renderer.getToolkit();
			m = tool.getImage(str);
		  }
		 public void paintIcon(Component lab, Graphics g){
			lab=jp.renderer;
			g.drawImage(m, 20, 20, lab);
			
		} 	
 }
}


图片不会显示。。。怎么改?
2013年9月17日 14:23

3个答案 按时间排序 按投票排序

0 0

采纳的答案

引用

Object elements[][] = { 
                { new MyIcon("images/1.jpg",this)}, 
                { new MyIcon("images/2.gif",this) }, 
                { new MyIcon("images/3.jpg",this)}, 
                }; 

这段直接用ImageIcon
Object elements[][] = {  
                { new ImageIcon(this.getClass().getResource("images/1.jpg"))},  
                { new ImageIcon(this.getClass().getResource("images/2.gif")) },  
                { new ImageIcon(this.getClass().getResource("images/3.jpg"))},  
                };  

2013年9月17日 22:50
0 0


getListCellRendererComponent()方法是需要修改的。

参数value是Object类型,if的判断条件value instanceof Object[]不会成立,if代码块是不会执行的。

if (value instanceof Object[]) {   
                 Object[] values = (Object[]) value;                    
                  image = (ImageIcon)values[0];   
                }   
                if (image != null) {   
                       
                  this.setIcon(image);   
                }   
                return this;   
              }    
        



改成下面的试试。
public Component getListCellRendererComponent(JList list, Object value,
				int index, boolean isSelected, boolean cellHasFocus) {

			if (value != null) {
				setIcon(new ImageIcon("images/1.jpg"));
			}

			if (isSelected) {
				setBackground(list.getSelectionBackground());
				setForeground(list.getSelectionForeground());
			} else {
				setBackground(list.getBackground());
				setForeground(list.getForeground());
			}
			return this;
		}

2013年9月17日 23:28
0 0

请google,这种类似于自定义显示的,一搜一大把!

2013年9月17日 22:25

相关推荐

    java swing 多选下拉框 支持动态加载数据

    在Swing中,多选下拉框通常由JComboBox类实现,但默认的JComboBox只支持单选。为了实现多选功能,我们需要扩展JComboBox或者使用第三方库,如JList或JTable与弹出面板组合。 本主题涉及的知识点主要包括以下几个...

    JComboBox下拉框多选

    在标题"JComboBox下拉框多选"中提到的场景,就是将`JComboBox`与`JCheckBox`相结合,以实现用户可以从下拉列表中选择多个选项的功能。 以下是一个详细的解释: 1. **JComboBox的基本使用**: `JComboBox`是Java ...

    Swing控件,多选下拉框

    在Java的Swing库中,`JComboBox`是用于创建下拉框的组件,它可以提供一个下拉菜单供用户选择。然而,标准的`JComboBox`只支持单选模式,即用户只能选择一个选项。要实现多选下拉框功能,我们需要自定义组件或者使用...

    Java Swing JComboBox下拉列表框的示例代码

    Java Swing JComboBox 下拉列表框的示例代码 Java Swing JComboBox 下拉列表框是一种常用的 GUI 组件,它允许用户从多个选项中选择一个值。下面将详细介绍 JComboBox 的基本概念、常用构造方法、常用方法和示例代码...

    java 实现下拉列表JComboBox中值和显示不同

    Java 实现下拉列表 JComboBox 中值和显示不同 在 Java 中,实现下拉列表 JComboBox 中值和显示不同是一种常见的需求。下拉列表 JComboBox 是 Java 中的一种 GUI 组件,用于提供用户选择多个选项。通常情况下,我们...

    java写的日期下拉框控件

    本教程将深入讲解如何使用Java Swing编写一个日期下拉框控件,并介绍一个用于比较日期先后的工具类。 首先,Swing 提供了 `JCalendar` 类库,它允许开发者创建日期选择器。但是,由于 `JCalendar` 不是Java标准库的...

    Java Swing组件下拉菜单控件JComboBox用法示例

    Java Swing组件下拉菜单控件JComboBox用法示例 Java Swing组件下拉菜单控件JComboBox是Swing组件库中的一种常用控件,主要用于提供一个下拉菜单,用户可以从中选择一个选项。JComboBox继承自JComponent,实现了...

    JavaSwing下拉框列表框补全提示的类

    总之,`Java Swing 下拉框列表框补全提示的类` 提供了一种高效的方法来处理组件内内容超出显示范围的问题,通过 `ViewTooltip` 实现了自定义的提示功能,提高了用户体验。理解并熟练运用此类可以帮助开发者创建更...

    swing带滚动条的多选下拉选择框(name code形式)

    在Java的Swing库中,开发用户界面时经常会遇到需要创建具有滚动条的多选下拉选择框的需求。这样的组件可以提供丰富的交互性,并且在选项较多时,用户可以通过滚动条方便地浏览和选择。标题提到的"swing带滚动条的...

    swing效果点击下拉框自动填充文本框

    在Java的Swing库中,实现“点击下拉框自动填充文本框”的功能,涉及到Swing组件的交互、事件监听以及数据绑定的概念。这个功能在许多GUI应用中都非常常见,例如用户选择一个选项后,相应的文本框会自动更新为所选...

    java swing 图书管理系统+MySQL

    1. **Swing组件**:在图书管理系统中,Swing被用来创建各种UI元素,如JFrame(主窗口)、JButton(按钮)、JLabel(标签)、JTextField(文本框)、JComboBox(下拉框)等。这些组件可以帮助用户浏览图书信息、搜索...

    java_swing省_市_县三级连动

    首先,我们需要理解Java Swing中的JComboBox组件,它是实现下拉选择框的核心。JComboBox允许用户从一组预定义的选项中选择一个,并且可以自定义渲染和监听事件。在实现三级联动时,我们需要创建三个JComboBox,分别...

    JAVA SWING 图书管理系统

    2. **基本组件**:包括JButton(按钮)、JLabel(标签)、JTextField(文本字段)、JTextArea(文本区域)、JComboBox(下拉框)、JList(列表)和JTable(表格)。这些组件在图书管理系统中用于输入、显示和选择...

    JavaSwing帮助文档

    1. **Swing组件**:包括JFrame(主窗口)、JPanel(容器)、JButton(按钮)、JLabel(标签)、JTextArea(文本区域)、JTextField(单行文本输入框)、JComboBox(下拉框)、JList(列表)、JTable(表格)等。...

    基于Java Swing简易的图书管理系统

    【Java Swing简易图书管理系统详解】 Java Swing是Java提供的一个用于创建桌面应用的图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。本项目“基于Java Swing简易的图书管理系统”利用了...

    swing 模板QQ登录下拉框

    总结来说,Swing中的JComboBox可以用来创建下拉框,通过自定义渲染器可以实现图片和用户名的显示,而鼠标事件监听器则可以用来添加鼠标悬浮时的动态效果。在实际开发中,可以根据需求调整和优化这些代码,以满足特定...

    基于Java swing的风景日历课程设计

    Swing提供了多种组件,如JFrame(窗口)、JPanel(面板)、JButton(按钮)、JLabel(标签)、JComboBox(下拉框)等,这些都在这个日历系统中发挥了关键作用。JFrame是窗口的基础,用于承载所有的组件。JPanel则...

    Java下拉框监听,加入界面,切换界面的处理

    首先,Java提供了两种主要的API来创建和操作下拉框:Java Swing和JavaFX。这里我们主要关注Swing,因为它在许多桌面应用开发中仍然广泛使用。Swing中的下拉框组件是JComboBox。 ### 1. 创建JComboBox 创建...

    java swing日历程序idea编程环境

    在Swing中,下拉框通常由`javax.swing.JComboBox`表示。联动的下拉框意味着它们之间有某种关联,比如一个下拉框选择年份,另一个下拉框根据年份显示相应的月份。为了实现这种联动,你需要在年份下拉框的改变事件中...

Global site tag (gtag.js) - Google Analytics