在做Java窗口的时候经常需要给窗口设置背景图片,曾经试过纯手工编写Java窗口程序,实在是心累,大量的时间花在了设计窗口上,真正核心代码所花的时间却很少,直到发现了netbeans可以直接用拖拉的方式做窗口,省去了不少麻烦,真的是如获至宝啊,,,强烈安利一下。
今天所写的是如何使用netbeans可视化编程(GUI)为JFrame窗口设置背景图片,由于不能够给JFrame直接设置背景图片,所以可以通过各种间接的方法实现这一目标,这里给出的是使用JLabel标签和JPanel面板的方式。方法不止一种,多多尝试。
方法:将包含图像的 JLabel 嵌入 JFrame 组件中,而透明的 JPanel 将放置在 JLabel 之上。
- 选择 "File"(文件)> "New Project"(新建项目)。
- 在新建项目向导中,选择 "Java" > "Java Application"(Java 应用程序),然后单击 "Next"(下一步)。
- 键入 Test 作为项目名称。
- 清除 "Create Main Class"(创建主类)复选框。
- 单击 "Finish"(完成)。
- 在 "Projects"(项目)窗口中,展开 Test 节点。
- 右键单击 "Source Packages"(源包)节点,然后选择 "New"(新建)> "JFrame Form"(JFrame 窗体)。
- 键入 One 作为类名。
- 键入 myTest 作为包名。
- 单击 "Finish"(完成)。
- 在 "Design"(设计)视图中,右键单击 "JFrame",然后从弹出式菜单中选择 "Set Layout"(设置布局)> "Grid Bag Layout"(网格包布局)。
- 右键单击 "JFrame",然后从弹出式菜单中选择 "Add From Palette"(从组件面板上添加)> "Swing Containers"(Swing 容器)> "Panel"(面板)。
- 在 "Properties"(属性)窗口中,取消选择 jPanel 的 opaque 属性。
- 右键单击 "JFrame",然后从弹出式菜单中选择 "Add From Palette"(从组件面板上添加)> "Swing Controls"(Swing 控件)> "Label"(标签)。
- 在 "Projects"(项目)窗口中,右键单击 myTest 节点,然后选择 "New"(新建)> "Java Package"(Java 包)。
- 单击 "Finish"(完成)。添加新包(包内放置要设置的背景图片)。
- 选择已添加到窗体上的标签。
- 在 "Properties"(属性)窗口中,单击 "Properties"(属性)类别,然后滚动到 icon 属性。
- 单击省略号 (...) 按钮,在 icon 属性对话框中,单击 "Import to Project"(导入到项目)。
- 在文件选择器中,导航到系统上要使用的任何图像。然后,单击 "Next"(下一步)。
- 在向导的 "Select Target Folder"(选择目标文件夹)页中,选择 newpackage 资源文件夹,然后单击 "Finish"(完成)。
- 单击 "OK"(确定)以关闭 "icon property"(图标属性)对话框。
- 在 "Navigator"(导航器)窗口中,右键单击 "jPanel",然后从弹出式菜单中选择 "Properties"(属性)。
- ①在 "Properties"(属性)对话框中,将 Grid X、Grid Y、Weight X 和 Weight Y 属性设置为 1,并将 Fill 属性设置为 Both(两者)。
- ②单击 "Close"(关闭)。
- 针对 jLabel 重复步骤①和②。
- 在 "Properties"(属性)对话框中,选择 text 属性,然后删除 jLabel1。
- 背景完成。现在,可以执行其它操作了,例如可将 jLabel 和 jTextField 拖至 "Palette"(组件面板)中的 jPanel。二者都将显示在背景图像之上。
然后可以把JFrame的窗口最大化去除,这样就不会出现最大化时图片没有变化的问题了,(滑稽)。
如图
注:上述解决方案的优点在于,无论是在设计时还是运行时,背景图像都会显示出来。