首页 > 技术文章 > swing桌面四子棋程序开发过程中遇到的一些问题记录(一)

deng-c-q 2016-04-29 15:05 原文

      用swing开发项目时遇到很多问题,之前也没怎么做过swing的项目,遇到的问题也许很低级,但是都得自己一点一点去解决。

      问题(一):设置swing窗体的背景图片的问题,开始以为跟C#中winform是一样的直接设置Background image就可以了,其实不然,网上查了一查如何设置窗体背景的问题,最后我经过自己的实践觉得还是用自定义一个JPanel组件来解决没用JLable组件太过去局限。这里我提出我重写后的JPanel的代码。在设置窗体的背景的时候,将这个类添加到JFrame中,并将此JPanel的宽和高都设置为窗体的高和宽就好了,如果需要在JPanel里面作业,则需要在JPanel里面添加布局。

package com.wxyztech.control;

import java.awt.Graphics;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class MImagePanel extends JPanel {

	private ImageIcon imageIcon = null;
	
	public ImageIcon getImageIcon() {
		return imageIcon;
	}
	public void setImageIcon(URL imgUrl) {
		imageIcon = new ImageIcon(imgUrl);
	}
	public MImagePanel() {
		
	}
	//构造方法,当我们在实例化JPanel的时候,直接加上背景图片的URL就可以实现背景的效果
	public MImagePanel(URL imgUrl){
		imageIcon = new ImageIcon(imgUrl); 
	}
	@Override
	protected void paintComponent(Graphics g) {
		// TODO 自动生成的方法存根
		int x = 0, y = 0;
		//java.net.URL imgURL = getClass().getResource("/bg/bg_default.png");
		//ImageIcon icon = new ImageIcon(imgURL);
		g.drawImage(imageIcon.getImage(), x, y, getSize().width, getSize().height, this);
		super.paintComponent(g);
	}
}

在引用的时候下面几行代码就可以了

URL url = getClass().getResource("/bg/bg_PKing.png");
		panel = new MImagePanel(url);
		panel.setBounds(0, 0, frameWidth, frameHeight);
		panel.setOpaque(false);// 设置当前panel为透明的
		getContentPane().add(panel);
		panel.setLayout(null);

 

推荐阅读