我有一个框架和一个面板,面板中有一些标签和文本字段。我希望面板始终位于框架的中心。但当我最大化我的窗口时,它不会保持在中心;当我取消窗口的最大化时,标签和文本字段超出了边界。
以下是我的部分代码(“控件”是一个面板):
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();
在挫折之后。