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);
}
} 展开
现在是这样的,应该怎么改?
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);
}
} 展开
3个回答
展开全部
最简单的方法:
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不好办,需要用其他类型的窗口),所以如果图片过窄的话,两边会显示空白。
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 就能自动画,我们又何必多此一举呢?
另外,我的方式能够支持动画的,你自己那样画的话,是不行的。
展开全部
获取容器的宽和高,然后设置图片的宽和高
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
g.drawImage(background.getImage(), 0, 0,getWidth(),getHeight(), this);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询