是否有任何方法可以将图像设置为背景JFrame
?
Shruthi
问问题
229638 次
4 回答
41
没有内置方法,但有几种方法可以做到这一点。目前我能想到的最直接的方法是:
- 创建 的子类
JComponent
。 - 覆盖该
paintComponent(Graphics g)
方法以绘制要显示的图像。 - 将 的内容窗格设置为此
JFrame
子类。
一些示例代码:
class ImagePanel extends JComponent {
private Image image;
public ImagePanel(Image image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
// elsewhere
BufferedImage myImage = ImageIO.read(...);
JFrame myJFrame = new JFrame("Image pane");
myJFrame.setContentPane(new ImagePanel(myImage));
JFrame
请注意,如果您想要的话,此代码不会处理调整图像大小以适应.
于 2009-06-30T17:41:56.480 回答
23
尝试这个 :
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame();
try {
f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg")))));
} catch (IOException e) {
e.printStackTrace();
}
f.pack();
f.setVisible(true);
}
}
顺便说一句,这将导致内容窗格不是容器。如果你想向它添加东西,你必须继承一个 JPanel 并覆盖 paintComponent 方法。
于 2009-06-30T17:46:18.407 回答
6
您可以使用背景面板类。它按照上面的说明进行自定义绘画,但为您提供了显示缩放、平铺或正常大小的图像的选项。它还解释了如何使用带有图像的 JLabel 作为框架的内容窗格。
于 2009-07-01T18:13:05.403 回答
0
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class BackgroundImageJFrame extends JFrame
{
JButton b1;
JLabel l1;
public BackgroundImageJFrame() {
setSize(400,400);
setVisible(true);
setLayout(new BorderLayout());
JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful_design.png"));
add(background);
background.setLayout(new FlowLayout());
l1=new JLabel("Here is a button");
b1=new JButton("I am a button");
background.add(l1);
background.add(b1);
}
public static void main(String args[])
{
new BackgroundImageJFrame();
}
}
查看下面的链接
http://java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html
于 2013-08-05T06:36:50.727 回答