JAVA图形界面,怎么让背景图片正好充满JFrame?

JPanel里是一张背景图片,然后把JLabel放在JFrame的正中央,并且充满整个JFrame,应该怎么写?现在是这样的,应该怎么改?importjava.awt.*... JPanel里是一张背景图片,然后把JLabel放在JFrame的正中央,并且充满整个JFrame,应该怎么写?
现在是这样的,应该怎么改?
import java.awt.*;
import javax.swing.*;
public class Test {
public static void main(String[] args) {
JFrame mainframe = new JFrame("五子棋");
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel cp = (JPanel)mainframe.getContentPane();
cp.setLayout(new BorderLayout());
cp.add("Center",new mypanel());
mainframe.pack();
mainframe.setVisible(true);
}
}
class mypanel extends JPanel {
ImageIcon background = new ImageIcon("D:\\java documents\\Gobang\\棋盘.jpg");
public void paintComponent(Graphics g) {
g.drawImage(background.getImage(), 0, 0, this);
super.paintComponents(g);
}
}
展开
 我来答
liuyz60
推荐于2017-11-27 · TA获得超过300个赞
知道小有建树答主
回答量:262
采纳率:77%
帮助的人:118万
展开全部
最简单的方法:
JFrame mainframe = new JFrame("五子棋");
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel cp = (JPanel) mainframe.getContentPane();
cp.setLayout(new BorderLayout());
ImageIcon background = new ImageIcon("D:\\java documents\\Gobang\\棋盘.jpg");
JLabel label=new JLabel(background);
cp.add("Center", label);
mainframe.pack();
mainframe.setVisible(true);
不管用哪种方法,由于窗口有最小大小限制(主要是要显示标题栏上的按钮,所以如果设置成不要按钮,就可以不用本限制,但Jframe不好办,需要用其他类型的窗口),所以如果图片过窄的话,两边会显示空白。
追问
按你说的方法成功实现了,谢谢
但是请问我那样写为什么不行呢?是哪一句的问题?
.pack()不是能够让父类窗口适应子类吗
追答
你那样写的话,由于mypanel 的内容是直接画出来的,他不知道画出来的内容具体有多大。非要用你的方式的话,就要根据图片大小为mypanel 设置尺寸。但JLabel 就能自动画,我们又何必多此一举呢?

另外,我的方式能够支持动画的,你自己那样画的话,是不行的。
a609122285
2015-04-27 · 超过28用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:67万
展开全部
获取容器的宽和高,然后设置图片的宽和高
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
302652034_bai
2015-04-27 · TA获得超过4145个赞
知道大有可为答主
回答量:2206
采纳率:66%
帮助的人:1544万
展开全部
g.drawImage(background.getImage(), 0, 0,getWidth(),getHeight(), this);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式