JDialog中添加JPanel面板问题?

来源:百度知道 编辑:UC知道 时间:2024/06/25 03:13:31
问题:自己写了两个类,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);
/

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)就能搞定!