Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片的方法。这里不解的是为什么Swing默认不提供这个方法呢?既然它不提供我们就自己写一个吧,也不难,你要你知道Swing容器的图片都是用protected void paintComponent(Graphics g) 画上去的就可以了。
我们写一个类提供一个public void setBackground(Icon wallpaper) 方法,然后在这个方法里,我们保存传入的图片,然后利用repaint()方法去重绘控件,这是系统会自动调用控件的protected void paintComponent(Graphics g) 方法。 于是我们就达到了设置背景的目的。下面是完整的代码。附件是一个完整的例子。
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class ZPanel extends JPanel {
private static final long serialVersionUID = 6702278957072713279L;
private Icon wallpaper;
public ZPanel() {
}
protected void paintComponent(Graphics g) {
if (null != wallpaper) {
processBackground(g);
}
System.out.println("f:paintComponent(Graphics g)");
}
public void setBackground(Icon wallpaper) {
this.wallpaper = wallpaper;
this.repaint();
}
private void processBackground(Graphics g) {
ImageIcon icon = (ImageIcon) wallpaper;
Image image = icon.getImage();
int cw = getWidth();
int ch = getHeight();
int iw = image.getWidth(this);
int ih = image.getHeight(this);
int x = 0;
int y = 0;
while (y <= ch) {
g.drawImage(image, x, y, this);
x += iw;
if (x >= cw) {
x = 0;
y += ih;
}
}
}
}
文章地址:[url]http://javapub.iteye.com/blog/764681 [/url]
分享到:
相关推荐
下面是一个简单的示例,展示了如何使用 Swing 创建一个包含标题、内容面板和背景色设置的窗口。 ```java import java.awt.*; import javax.swing.*; public class ContentPaneDemo extends JFrame { public ...
Swing 组件允许设置背景色、前景色、字体等属性,以定制界面样式。 总结起来,Java Swing 提供了一整套组件和工具,用于创建丰富的图形用户界面,无论是在桌面应用还是轻量级应用中都有广泛的应用。理解和熟练掌握...
JFrame frame = new JFrame("Swing控件演示"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); JButton button = new JButton("点击我"); button.addActionListener(e ...
在使用 FlowLayout 时,可以对内部控件之间、内部控件与容器之间的间距进行设置。setHgap(int hgap) 方法用于指定水平间距;setVgap(int vgap) 方法用于指定垂直间距。 FlowLayout 的构造函数有多种,包括无参数...
这使得Swing控件具备了与AWT控件相似的功能,同时也增加了更多的特性和灵活性。在Swing中,开发者可以通过`add()`方法将控件添加到容器中,并可以使用一系列的方法来设置和获取控件的外观、位置和大小等属性。 ...
这通常涉及到在各种Swing组件(如按钮、标签等)以及面板上设置背景图片。 #### 一、添加图片的一般方法 1. **使用`ImageIcon`类**:这是添加图片最常用的方式之一。首先创建一个`ImageIcon`对象,然后可以通过它...
JAVA SWING 相关的知识,特别是在什么里面控件的运用。Swing 是 Java 的一個GUI 组件库,提供了許多实用的组件,可以用来构建复杂的图形用户界面。 JComponent JComponent 是一个抽象类,用于定义所有子类组件的...
菜单系统是 GUI 应用程序中常见的功能,Swing 提供了 `JMenuBar`、`JMenu`、` JMenuItem` 等类来创建和管理菜单。`JTable` 用于展示二维数据,支持排序、筛选和编辑等功能,是数据展示的重要工具。 ### 结论 Java ...
1. **掌握AWT的container类的使用**:重点掌握Swing中的`JFrame`和`JPanel`如何创建窗口以及如何设置窗口属性。 2. **熟练使用API文档**:学会如何查阅文档,以便能够在文档中快速找到所需的内容。 3. **掌握容器...
组件是构成用户界面的基本元素,如按钮、文本框等,而容器则可以容纳一个或多个组件,比如窗口(JFrame)和面板(JPanel)。自定义控件通常是在现有组件的基础上进行扩展,继承自Java Swing或JavaFX的相关类,如...
import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.xml.bind.util.ValidationEventCollector; import ...
4. **控件**:控件是指具体的UI元素,如按钮、文本框等。 #### 三、创建基本的Swing窗体 1. **实现窗体**: - 首先需要创建一个继承自`JFrame`的新类。 - 导入必要的包`java.awt.*`和`javax.swing.*`。 - 在...
Composite则是一种可以包含其他控件的容器,类似Java AWT的Container或Swing的JPanel。Item是指那些被包含在其他控件中的组件,如列表或表格中的条目。 JFace库建立在SWT之上,提供更高级的服务,如数据绑定和视图...
本篇重点讲解Swing框架下的组件使用,如窗体(Frame)、容器(Container)、面板(Panel)以及各种控件的加载与布局管理。 #### 二、窗体与容器 1. **窗体(Frame)** - 在Java Swing中,创建一个窗体需要继承`...
- **Composite**:用于包含其他控件的控件,类似于AWT的Container和Swing的JPanel。 - **Item**:被其他控件包含的窗口小部件,如列表和表格,是抽象类。 5. 继承层次结构 Widget是底层的抽象类,Control、...
Composite是一个容器类,可以包含其他控件,类似Java AWT中的Container或Swing中的JPanel。Item则用于表示列表、表格等特定类型的组件,它们通常不是复合组件,但可以由其他控件包含。 Eclipse作为一个跨平台的开发...
2. 学习并应用AWT和Swing中的控件。 3. 掌握不同类型的布局管理器,如流布局、网格布局、边界布局和混合布局。 4. 明确容器控件和非容器控件的区别。 5. 理解Java事件处理机制及其流程。 实验内容: 在Java GUI设计...
Swing提供了丰富的组件,包括JLabel、JTextField、JButton、JCheckBox、JComboBox、JTextArea、JFrame和JPanel等,它们是构建GUI的基础。 JComponent是Swing中大多数组件的基类,位于组件类层次结构的顶端,它是`...