swing桌面四子棋程序开发过程中遇到的一些问题记录(一)
用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);


浙公网安备 33010602011771号