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
}
分享到:
相关推荐
JLabel是Swing中用于显示文本、图像或两者组合的基本组件。默认情况下,JLabel的行为和外观相对简单。但在实际应用中,我们可能需要定制它的功能,比如添加鼠标事件处理,改变其外观等。通过继承JLabel并覆盖其方法...
自定义JLabel通常涉及到重写`paintComponent()`方法来绘制带有下划线的文本,并实现MouseListener接口,监听鼠标事件。当鼠标点击事件发生时,我们可以调用`Desktop.browse()`方法打开浏览器并导航到指定URL。 例如...
在默认情况下,`JList` 只能显示字符串元素,但通过自定义渲染器(CellRenderer),我们可以扩展其功能以显示更丰富的信息,如图片和文字的组合。标题“图片+文字的Jlist”正是指这个功能的实现。 描述中的“重新...
而JDialog则是一个通用的对话框类,可以用于创建更复杂的自定义对话框。 二、自定义对话框的创建 自定义对话框通常基于JDialog类来实现。首先,你需要创建一个JDialog实例,然后添加需要的组件,如按钮、文本字段、...
另一种方法是创建一个自定义的文本组件,继承自`JTextComponent`,并在其中添加图片显示的功能。这需要重写一些内部方法,比如绘图,以便在文本字段的特定位置绘制图片。这种方法相对复杂,适合需要更精细控制的场景...
在Swing中,JFrame是顶级容器,可以用来承载所有的组件,包括用于显示图像的JLabel或自定义的JPanel。JLabel可以显示图像,而JPanel可以重写paintComponent()方法来自定义绘图逻辑。 在Java图片生成器中,你可能...
3. **显示图片**:图片在GUI中显示通常通过`JLabel`或自定义的组件完成,比如这里的`MyCanvas`可能就是一个用于显示图片的自定义画布。开发者会重写`paintComponent()`方法,将`BufferedImage`绘制到屏幕上。 4. **...
本篇文章将深入探讨如何使用Java实现一个无系统边框的自定义窗体,并用自定义图片作为窗体背景。以下是实现这个功能的关键步骤和技术细节: 1. **去除系统边框**: 通过调用`JFrame`类的`setUndecorated(true)`...
创建一个实现了`ListCellRenderer`接口的类,重写`getListCellRendererComponent`方法,以便在`JList`中显示图片。在这个方法里,我们将设置组件(通常是`JLabel`)的图标属性为当前图片。 ```java class ...
在Java桌面应用开发中,有时候我们需要创建一个独立的对话框,用于显示特定信息或进行用户交互,例如添加、编辑数据等操作。`JDialog`是Java Swing库中的一个组件,它可以帮助我们创建这样的对话框。本篇文章将详细...
自定义对象需要重写`toString()`方法以显示文本,同时需要提供获取图片的方法供`JList`使用。你可以使用`ListCellRenderer`来定制每个列表项的显示,包括设置图片和文字的位置。 2. **复选框的JList** 如果需要...
5. **绘制和擦除**:在`JPanel`上,我们可以重写`paintComponent()`方法进行自定义绘图。在拖动过程中,我们需要清除原有选区,然后重新绘制新的选区。这需要用到`Graphics2D`对象的`drawRect()`方法来画出矩形,...
这种方式不需要重写任何绘图方法,而是通过设置JLabel的icon属性来显示图片,并将其设置为JFrame的背景。首先,创建一个JLabel,加载图片并设置其尺寸为JFrame的大小,然后将它添加到JFrame的内容pane上: ```java ...
窗口中会包含多个组件,比如JLabel用于显示游戏说明或得分,JButton用于触发开始游戏等操作。当用户点击“开始游戏”按钮,程序将进入拼图游戏的核心逻辑。 拼图游戏的核心算法可能包括以下步骤: 1. 图像加载:...
3. **重写方法**: 为了改变控件的行为,我们需要重写父类的一些关键方法,例如`paintComponent()`在Swing中用于绘制组件,而在JavaFX中可以使用`draw()`方法。 4. **事件处理**: 自定义控件可能需要处理用户交互,...
Swing组件是构建GUI的基础,包括按钮(JButton)、文本框(JTextField)、标签(JLabel)等。它们继承自java.awt.Component类或其子类,并且大部分是轻量级的,意味着它们不依赖于操作系统提供的窗口系统,从而具有...
`JLabel`组件主要用于显示文本、图像或者两者结合。在下棋应用中,`JLabel`可以用来表示棋子。我们可以设置`JLabel`的图标属性为棋子的图片,并通过调整其大小和位置,将其放置在棋盘的特定格子上。如果需要动态更新...
接着,我们需要重写`JList`的`createCellRenderer`方法,以便为每个列表项提供自定义的渲染器。渲染器将负责创建包含文本和删除按钮的组件。 ```java public class CustomJList extends JList...
JList默认使用DefaultListCellRenderer,但我们可以创建一个继承自DefaultListCellRenderer的子类,并重写其`getListCellRendererComponent`方法,以此来定制每个单元格的显示。在这个方法中,你可以设置文本、图标...
我们需要创建一个自定义的`TransferHandler`子类,重写其中的`importData`方法,以便在图片被拖放到`JFrame`时处理数据。 在实际代码中,你可能会使用`DataFlavor`来识别拖放的数据类型,使用`FileDrop`库简化文件...