如何将图像背景放在JPANEL上?
JPanel pDraw = new JPanel(new GridLayout(ROWS,COLS,2,2));
pDraw.setPreferredSize(new Dimension(600,600)); //size of the JPanel
pDraw.setBackground(Color.RED); //How can I change the background from red color to image?
答案 0 :(得分:4)
最简单的方法是将Image
加载到ImageIcon
并将其显示在JLabel
中,但是:
要直接“绘制”图像到JPanel,请将JPanel的paintComponent(Graphics)
方法覆盖为以下内容:
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.drawImage(img, 0, 0, null);
}
其中img
是Image
(可能通过ImageIO.read()
调用加载)。
Graphics#drawImage
是一个严重超载的命令,它允许您高度具体地说明将图像绘制到组件的方式,数量和位置。
您还可以使用Image#getScaledInstance
方法获得“喜欢”并将图像缩放到令人愉悦的状态。对于-1
或width
参数,这将需要height
,以保持图像的纵横比相同。
以更加花哨的方式:
public void paintComponent(Graphics page)
{
super.paintComponent(page);
int h = img.getHeight(null);
int w = img.getWidth(null);
// Scale Horizontally:
if ( w > this.getWidth() )
{
img = img.getScaledInstance( getWidth(), -1, Image.SCALE_DEFAULT );
h = img.getHeight(null);
}
// Scale Vertically:
if ( h > this.getHeight() )
{
img = img.getScaledInstance( -1, getHeight(), Image.SCALE_DEFAULT );
}
// Center Images
int x = (getWidth() - img.getWidth(null)) / 2;
int y = (getHeight() - img.getHeight(null)) / 2;
// Draw it
page.drawImage( img, x, y, null );
}
答案 1 :(得分:2)
Here's解释。