MarioFei 2013-08-06 04:57 采纳率: 0%
浏览 2383

java awt 布局 下面panel 尺寸已经设定好了,为什么不按照流式布局添加 而是尺寸变了

package huatu;

import java.awt.*;
import java.awt.image.BufferedImage;

import javax.swing.BoxLayout;

public class num1 {
private Frame f=new Frame("绘图");
private Panel p=new Panel();
private MyCanvas board=new MyCanvas();
private MenuBar mb=new MenuBar();
private Menu mu=new Menu("文件");
private MenuItem [] mi=new MenuItem[5];
BufferedImage bi=new BufferedImage(500,300,BufferedImage.TYPE_INT_RGB);
Graphics g=bi.getGraphics();
Button b[]=new Button[20];
public num1()
{
mi[0]=new MenuItem("新建");
mi[1]=new MenuItem("保存");
mi[2]=new MenuItem("另存为");
mi[3]=new MenuItem("读取");
mi[4]=new MenuItem("关于画图");
p.setSize(150, 300);
for(int i=0;i<20;i++)
{
b[i]=new Button(i+"");
p.add(b[i]);
}

}
public void init()
{
    for(int i=0;i<5;i++)
    {
        mu.add(mi[i]);
    }
    mb.add(mu);
    f.setMenuBar(mb);


    board.setSize(400, 300);
    board.setBackground(Color.black);
    f.add(p,BorderLayout.WEST);
    f.add(board);



    f.pack();
    f.setVisible(true);

}
public static void main(String args[])
{
    new num1().init();
}
class MyCanvas extends Canvas
{
    public  void paint(Graphics g)
    {

    }
}

}

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-11 10:29
    关注

    这是因为在初始化时,p对象的尺寸已经被设置为150*300,而不是使用流式布局。因此,添加到p中的所有组件都会在这个固定尺寸的区域中显示,而不是自适应大小。如果要使用流式布局,需要将p的布局设置为FlowLayout,如:p.setLayout(new FlowLayout());。这样就会根据组件的大小来自动调整布局。

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错