在Java中关于带图片的Jpanel的显示问题?

我做了一个带图片的JPanel组件,将它添加到JFrame中,当JFrame的布局为BorderLayout时,可以正常显示,当为FlowLayout布局时,显示出问题了... 我做了一个带图片的JPanel组件,将它添加到JFrame中,当JFrame的布局为BorderLayout时,可以正常显示,当为FlowLayout布局时,显示出问题了,求指点?
/**
* 点餐界面中桌子组件
*/
package com.qiqiclient.view;

import java.awt.*;

import javax.swing.*;

import com.qiqiclient.tool.SeveralFonts;

public class OrderFace_ZhuoZi extends JPanel{
private int zuoHao=101; //桌号
private int peopleEatNum=2; //就餐人数
private String zuoZiState="空净"; //座子状态
private int zuoziDefaultEatNum=3; //座子额定就餐人数
private String backPicName="orderFace_KongJing.png";
private Image im=null; //背景图片

//构造函数
public OrderFace_ZhuoZi(int zuoHao,int zuoziDefaultEatNum,int peopleEatNum,String zuoZiState,String backPicName){
this.zuoHao=zuoHao;
this.zuoziDefaultEatNum=zuoziDefaultEatNum;
this.peopleEatNum=peopleEatNum;
this.zuoZiState=zuoZiState;
this.backPicName=backPicName;
im=this.dealBackPic();
// this.setSize(200,200);
}

//绘制函数
public void paint(Graphics g){
super.paint(g);
g.drawImage(im, 0, 0, 85,57, this);
g.setFont(SeveralFonts.setFontSong13());
g.setColor(Color.black);
g.drawString(zuoHao+"", 5, 15);
g.drawString(zuoziDefaultEatNum+"人桌", 5, 32);
g.drawString(peopleEatNum+"/"+zuoziDefaultEatNum, 55, 32);
g.drawString(zuoZiState, 55, 52);
}

//处理背景图片
public Image dealBackPic(){
Image tempImage=null;
String temp="/images/"+backPicName;
tempImage=new ImageIcon(getClass().getResource(temp)).getImage();
return tempImage;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jFrame=new JFrame();
jFrame.setSize(400, 400);
jFrame.setLayout(new FlowLayout());
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OrderFace_ZhuoZi a1=new OrderFace_ZhuoZi(1, 3, 2, "空净", "orderFace_KongJing.png");
jFrame.add(a1);
jFrame.setVisible(true);
}
}
展开
 我来答
302652034_bai
2015-02-02 · TA获得超过4145个赞
知道大有可为答主
回答量:2206
采纳率:66%
帮助的人:1541万
展开全部
a1用setBounds设置一下面板的大小。
追问
a1设置setBounds后只有在JFrame为空布局才有用,这样的话如果要放多个a1,都得设置,而且要计算位置,不太好
追答
Flow布局和Border布局不同,border布局会根据其父组件的大小来和其他组件的位置关系设置组件本身的大小。
而Flow布局不会去这么做,因此你需要自己主动的去设置组件的大小。
其方法有三个,这里那你需要的是这个:a1.setPreferredSize(new Dimension(100, 100));
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式