JDialog中添加JPanel面板问题? 15

问题:自己写了两个类,DrawChessboard继承JPanel,在其中画了一个五子棋棋盘方格并添加了背景图片,PlayInterface继承JDialog,创建一个D... 问题:自己写了两个类,DrawChessboard继承JPanel,在其中画了一个五子棋棋盘方格并添加了背景图片,PlayInterface继承JDialog,创建一个DrawChessboard对象后添加到PlayInterface中,可是在对话框中只能显示一个小点,无法显示完整的棋盘方格。
这是代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class DrawChessboard extends JPanel{
private Image image;

public DrawChessboard(Image image) {
this.setSize(500,500);
this.image = image;
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0, 0,this.getWidth(),this.getHeight(), null); //将图片画出来,实现背景图片的设置
//画19*19的棋盘
for (int i = 0; i <= 450; i = i + 25) {
g.drawLine(0, i, 450, i);
}
g.drawLine(0, 450, 450, 450);
for (int j = 0; j <= 450; j = j + 25) {
g.drawLine(j, 0, j, 450);
}
g.drawLine(450, 0, 450, 450);
//五个基准点
g.fillOval(71, 71, 8, 8);
g.fillOval(371, 71, 8, 8);
g.fillOval(71, 371, 8, 8);
g.fillOval(371, 371, 8, 8);
g.fillOval(221, 221, 8, 8);
}
}

import javax.swing.*;
import java.awt.*;

public class PlayInterface extends JDialog{

// private PersonMessage pmsg=new PersonMessage(new ImageIcon("F:/04.jpg").getImage());
private DrawChessboard dcb=new DrawChessboard(new ImageIcon("F:/运动会.jpg").getImage());

public PlayInterface(){

this.setLayout(new GridBagLayout());
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
this.setVisible(true);
// this.add(pmsg, new GridBagConstraints(0, 1, 10, 10, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
this.add(dcb, new GridBagConstraints(1, 2, 50, 50, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));

}
public static void main(String args[]){
PlayInterface pi=new PlayInterface();
pi.setSize(700,700);
}

}
affix您好,用您所提供的方法还是不行,JPanel中没有setPreferredSize(int width,int height);方法,只有setPreferredSize(Dimension preferredsize);方法。
我先Dimension size=new Dimension(500,500); 然后setPreferredSize(size);还是不行。
展开
 我来答
千玑3754
2009-11-28 · TA获得超过354个赞
知道答主
回答量:157
采纳率:0%
帮助的人:206万
展开全部
GridBagLayout 使用每个JComponent的PreferredSize这个property来设定每个控件的Size。
虽然你在DrawChessBoard的“构造”里使用setSize()这个方法来设置了DrawChessBoard的Size。但是当GridBagLayout为每个空间分配空间的时候,首先读取每个控件的getPreferredSize(),来确定每个gridbag的大小。在确定好大小后在使用setSize()来改变控件的size。
而JPanel中当PreferredSize这个property没有被用户赋值的话,默认会使用MinimumSize的值.而MinimumSize默认是(0,0)。
这样DrawChessBoard就会被GridBagLayout设置为(0.0).
你在DrawChessBoard的“构造”里, 把setSize(500,500)改为setPreferredSize(500,500)就能搞定!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式