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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA图形界面,怎么让背景图片正好充满JFrame?相关的知识,希望对你有一定的参考价值。

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);

最简单的方法:
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 就能自动画,我们又何必多此一举呢?

另外,我的方式能够支持动画的,你自己那样画的话,是不行的。

参考技术A 获取容器的宽和高,然后设置图片的宽和高 参考技术B g.drawImage(background.getImage(), 0, 0,getWidth(),getHeight(), this);

java怎么将查询到的数据库的内容显示到java图形界面上?

我用的是SqlServer2005!我现在做好了查询的,查询数据库中所有的内容!点击一个菜单栏的项,出现另一个窗体!怎么让这些内容显示到这个窗体上啊!

写一个javaBean,比如叫Result, 这里只给你个示范, private int id; private String name; ....... public void setId(int id) this.id = id; public int getId() return id; public void setName(String name) this.name = name; public String getName() return name; .......然后得到结果后把结果设成javaBean,再把javaBean装到list里 LIst resultList = new ArrayLIst();
while(rs.next()) Result result = new Result();
result.setId(rs.getInt("memID"));
result.setName(rs.getString("memNam"));
....... resultList.add(result); 最后再你需要的地方展现就可以了 for(int i=0; i<resultList.size(); i++) Result result = list.get(i);JLable lable1 = new JLable(result.getId); JLable lable2 = new JLable(result.getName);.... 只是写了思路,不是在工具上写的,可能有语法错误,还不懂在m我。
参考技术A 写一个Member类:Member.java将数据库的列作为Member的属性,写上get/set方法; 提问人的追问 2010-06-04 15:51 stmt = con.createStatement();
rs=stmt.executeQuery("select * from member");
List<Member> list=new ArrayList<Member>(); // New一个List对象来存取Member
while(rs.next())Member member=new Member (); //New一个Member 对象
member.setId(rs.getInt("memID"));
member.setNam(getString("memNam"));
member.setPsw(rs.getString("memPsw"));
..................//列出所有的 list.add(member);request.setAttribute("list",list); 这样就将list 存到内存里了,,在页面遍历就OK、了,、不懂了问我
参考技术B 你查询出来的结果在结合里, 比如叫rsif(rs.next) //循环把你查询的结果读出来. 并填充到你新的窗体上 参考技术C 1、先在外面定义一个StringBuild
2、然后再循环里StringBuild.append(rs.getObject(1))
3、最后将字符串显示到JTextField里就行了。
参考技术D JtextField t = new JtextField();t.setText(name);

以上是关于JAVA图形界面,怎么让背景图片正好充满JFrame?的主要内容,如果未能解决你的问题,请参考以下文章

java中怎样在界面中显示图片

html中,怎么让背景图片充满整个页面

网页设计中怎么让一张图片填充满整个画面 ?

java怎么将查询到的数据库的内容显示到java图形界面上?

java怎么将查询到的数据库的内容显示到java图形界面上?

Java如何让多个图片都按照一定轨迹下落