代码之家  ›  专栏  ›  技术社区  ›  Alex Cai

未最大化后的AWT面板布局问题

  •  0
  • Alex Cai  · 技术社区  · 3 年前

    我有一个框架和一个面板,面板中有一些标签和文本字段。我希望面板始终位于框架的中心。但当我最大化我的窗口时,它不会保持在中心;当我取消窗口的最大化时,标签和文本字段超出了边界。

    以下是我的部分代码(“控件”是一个面板):

    frame.setSize(960, 540);
    frame.addComponentListener(new ComponentAdapter()
    {
        @Override
        public void componentResized(ComponentEvent e)
        {
            super.componentResized(e);
            resize();
        }
    }
    frame.setLayout(null);
    controls.setLayout(new GridLayout(3,2));
    Label[] labels = { new Label("abc"),new Label("def"),new Label("ghi") };
    TextField[] texts = { new TextField(),new TextField(),new TextField() };
    for (int i = 0; i < 3; i++)
    {
        labels[i].setFont(cosmicSans);
        labels[i].setAlignment(Label.CENTER);
        controls.add(labels[i]);
        texts[i].setFont(cosmicSans);
        controls.add(texts[i]);
    }
    frame.add(controls);
    resize();
    

    这是调整大小的功能:

    int width = frame.getWidth();
    int height = frame.getHeight();
    controls.setBounds(width >> 2, height >> 2, width >> 1, height >> 1);
    

    编辑:已解决,添加

    controls.revalidate();
    

    在挫折之后。

    0 回复  |  直到 3 年前