`

重写JLabel,用于自定义显示图片

阅读更多
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JLabel;

/**
 * 重写JLabel,用于自定义显示图片
 * @author RuiLin.Xie - xKF24276
 *
 */
public class DiyJLabel extends JLabel
{
	//图片路径
	private String imgPath;
	
	//显示样式
	private ShowStyle style;
	
	//图片
	private Image img;

	/**
	 * 设置图片路径及显示样式
	 * @param path
	 */
	public void setImage(String path, ShowStyle style)
	{
		imgPath = path;
		this.style = style;
		
		try
		{
			img = ImageIO.read(new File(imgPath));
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	/**
	 * 重写label绘画方法
	 */
	@Override
	protected void paintComponent(Graphics g)
	{
		Image img = getImage();
		
		if(ShowStyle.ORIGINALLY == style && img != null)
		{
			//图片原始像素
			g.drawImage(img, 0, 0, img.getWidth(this), img.getHeight(this), this);
		}
		else if(ShowStyle.ZOOM == style && img != null)
		{
			//缩放到与label同大小
			g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
		}
		else if(style == null && img != null)
		{
			//图片原始像素
			g.drawImage(img, 0, 0, img.getWidth(this), img.getHeight(this), this);
		}

		super.paintComponent(g);
		g = null;
	}
	
	/**
	 * 得到设置图片
	 * @return
	 */
	public Image getImage()
	{
		return img;
	}
}

/**
 * 显示样式
 * @author RuiLin.Xie - xKF24276
 */
enum ShowStyle
{
	/** 原始像素 **/
	ORIGINALLY,
	
	/** 缩放到与Label同大小 **/
	ZOOM
}
分享到:
评论

相关推荐

    SwingHacks学习笔记(2)-----自定义JLabel,JButton

    JLabel是Swing中用于显示文本、图像或两者组合的基本组件。默认情况下,JLabel的行为和外观相对简单。但在实际应用中,我们可能需要定制它的功能,比如添加鼠标事件处理,改变其外观等。通过继承JLabel并覆盖其方法...

    JavaSE JLabel超链接例子

    自定义JLabel通常涉及到重写`paintComponent()`方法来绘制带有下划线的文本,并实现MouseListener接口,监听鼠标事件。当鼠标点击事件发生时,我们可以调用`Desktop.browse()`方法打开浏览器并导航到指定URL。 例如...

    图片+文字的Jlist

    在默认情况下,`JList` 只能显示字符串元素,但通过自定义渲染器(CellRenderer),我们可以扩展其功能以显示更丰富的信息,如图片和文字的组合。标题“图片+文字的Jlist”正是指这个功能的实现。 描述中的“重新...

    swing中自定义对话框的几种实际用法

    而JDialog则是一个通用的对话框类,可以用于创建更复杂的自定义对话框。 二、自定义对话框的创建 自定义对话框通常基于JDialog类来实现。首先,你需要创建一个JDialog实例,然后添加需要的组件,如按钮、文本字段、...

    JTextFiled中加入图片源码

    另一种方法是创建一个自定义的文本组件,继承自`JTextComponent`,并在其中添加图片显示的功能。这需要重写一些内部方法,比如绘图,以便在文本字段的特定位置绘制图片。这种方法相对复杂,适合需要更精细控制的场景...

    java图片生成器

    在Swing中,JFrame是顶级容器,可以用来承载所有的组件,包括用于显示图像的JLabel或自定义的JPanel。JLabel可以显示图像,而JPanel可以重写paintComponent()方法来自定义绘图逻辑。 在Java图片生成器中,你可能...

    java 图片查看器

    3. **显示图片**:图片在GUI中显示通常通过`JLabel`或自定义的组件完成,比如这里的`MyCanvas`可能就是一个用于显示图片的自定义画布。开发者会重写`paintComponent()`方法,将`BufferedImage`绘制到屏幕上。 4. **...

    java绘制自定义窗体.docx

    本篇文章将深入探讨如何使用Java实现一个无系统边框的自定义窗体,并用自定义图片作为窗体背景。以下是实现这个功能的关键步骤和技术细节: 1. **去除系统边框**: 通过调用`JFrame`类的`setUndecorated(true)`...

    JList动态改变图片

    创建一个实现了`ListCellRenderer`接口的类,重写`getListCellRendererComponent`方法,以便在`JList`中显示图片。在这个方法里,我们将设置组件(通常是`JLabel`)的图标属性为当前图片。 ```java class ...

    java 自定义JDialog实现模态窗口

    在Java桌面应用开发中,有时候我们需要创建一个独立的对话框,用于显示特定信息或进行用户交互,例如添加、编辑数据等操作。`JDialog`是Java Swing库中的一个组件,它可以帮助我们创建这样的对话框。本篇文章将详细...

    java构建几种个性的JList

    自定义对象需要重写`toString()`方法以显示文本,同时需要提供获取图片的方法供`JList`使用。你可以使用`ListCellRenderer`来定制每个列表项的显示,包括设置图片和文字的位置。 2. **复选框的JList** 如果需要...

    java图片剪切

    5. **绘制和擦除**:在`JPanel`上,我们可以重写`paintComponent()`方法进行自定义绘图。在拖动过程中,我们需要清除原有选区,然后重新绘制新的选区。这需要用到`Graphics2D`对象的`drawRect()`方法来画出矩形,...

    Java中JFrame添加图片的两种方法.pdf

    这种方式不需要重写任何绘图方法,而是通过设置JLabel的icon属性来显示图片,并将其设置为JFrame的背景。首先,创建一个JLabel,加载图片并设置其尺寸为JFrame的大小,然后将它添加到JFrame的内容pane上: ```java ...

    swing拼图游戏.

    窗口中会包含多个组件,比如JLabel用于显示游戏说明或得分,JButton用于触发开始游戏等操作。当用户点击“开始游戏”按钮,程序将进入拼图游戏的核心逻辑。 拼图游戏的核心算法可能包括以下步骤: 1. 图像加载:...

    基于java的生成自定义控件源代码.zip

    3. **重写方法**: 为了改变控件的行为,我们需要重写父类的一些关键方法,例如`paintComponent()`在Swing中用于绘制组件,而在JavaFX中可以使用`draw()`方法。 4. **事件处理**: 自定义控件可能需要处理用户交互,...

    自定义Swing组件代码

    Swing组件是构建GUI的基础,包括按钮(JButton)、文本框(JTextField)、标签(JLabel)等。它们继承自java.awt.Component类或其子类,并且大部分是轻量级的,意味着它们不依赖于操作系统提供的窗口系统,从而具有...

    java JLable显示下棋视图

    `JLabel`组件主要用于显示文本、图像或者两者结合。在下棋应用中,`JLabel`可以用来表示棋子。我们可以设置`JLabel`的图标属性为棋子的图片,并通过调整其大小和位置,将其放置在棋盘的特定格子上。如果需要动态更新...

    自定义JList

    接着,我们需要重写`JList`的`createCellRenderer`方法,以便为每个列表项提供自定义的渲染器。渲染器将负责创建包含文本和删除按钮的组件。 ```java public class CustomJList extends JList...

    JFC Swing活学活用系列之定制JList显示.rar

    JList默认使用DefaultListCellRenderer,但我们可以创建一个继承自DefaultListCellRenderer的子类,并重写其`getListCellRendererComponent`方法,以此来定制每个单元格的显示。在这个方法中,你可以设置文本、图标...

    java实现在JFrame窗口进行图片拖拽

    我们需要创建一个自定义的`TransferHandler`子类,重写其中的`importData`方法,以便在图片被拖放到`JFrame`时处理数据。 在实际代码中,你可能会使用`DataFlavor`来识别拖放的数据类型,使用`FileDrop`库简化文件...

Global site tag (gtag.js) - Google Analytics