JAVA Paint组件的背景

时间:2016-04-17 15:41:19

标签: java swing

如何设置JComponent的背景?我目前有这个课程:

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JComponent;

public class ImagePanel extends JComponent {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Image image;
    public ImagePanel(Image image) {
        this.setLayout(new BorderLayout());
        this.image = image;
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}


private BufferedImage myImage;
private JButton button = new JButton("Click");
try {
        myImage = ImageIO.read(new File("/images/picture.png"));

    } catch (IOException e) {

        e.printStackTrace();
    }   

我使用以下代码绘制JFrame的内容窗格,但我不知道如何为JButton执行此操作

1 个答案:

答案 0 :(得分:2)

在JButton上显示图像的最佳方法是使用按钮创建ImageIcon,然后通过setIcon(myIcon)

设置JButton的图标
private BufferedImage myImage;
private JButton button = new JButton("Click");

public MyClass() {
    try {
        // much better to get the image as a resource
        // NOT as a File
        myImage = ImageIO.read(new File("/images/picture.png"));
        Icon buttonIcon = new ImageIcon(myImage);
        button.setIcon(buttonIcon);
    } catch (IOException e) {
        e.printStackTrace();
    } 
}

你说:

  

这不会将其设置为背景。它只是在文本旁边创建一个图标

然后你有几个选择:

  • 扩展JButton并在其paintComponent方法中绘制图像,类似于您使用JComponent执行此操作的方式。但要明白这会改变按钮边框的图形等等,它可能不会像你想要的那样工作,但是你很容易测试。
  • 或者从图像中获取Graphics对象,在文本中绘制到图像上,然后从中创建一个ImageIcon并将其放在按钮上。