public MyLayout (){
frame.setLayout(new BorderLayout());
panel.setLayout(new BorderLayout());
panel.add(new GraphicsSurface(),BorderLayout.CENTER);
frame.add(panel,BorderLayout.NORTH);
frame.add(btn1,BorderLayout.SOUTH);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
我正在创建一个将其放置在面板中的图形
panel.add(new GraphicsSurface(),BorderLayout.CENTER);
并将此面板放在JFrame中
frame.add(panel,BorderLayout.NORTH);
除了图形显示在JFrame外面
答案 0 :(得分:4)
"我希望将图形显示在JFrame顶部的中心位置。我还有更多广告组件"
在GraphicsSurface
覆盖getPreferredSize
并给它你想要的大小(我想时钟的大小
class GraphicsSurface extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimenstion(..., ...);
}
}
对于panel
,请勿设置布局。默认FlowLayout
将完美运行(默认情况下也是中心-yeeee!)。会发生什么是GraphicsSurface
将保持其首选大小,因为FlowLayout
会尊重它。然后panel
将被拉伸到框架的宽度(高度将保持GraphicsSurface
的高度),GraphicsSurface
将在{{1}中居中}}
有了这个,你应该没问题,将panel
添加到框架panel
。该中心将留给其他一切。
答案 1 :(得分:1)
您将面板放在第NORTH帧。 在北方,您的面板将仅采用寡妇宽度。所以他没有身高(或1px身高)。
因此,请尝试为面板定义尺寸:
panel.setPreferedSize(new Dimension(200, 200));
另外,正如评论中所建议的那样,将您的面板放入框架的中心。
替换:
frame.add(panel,BorderLayout.NORTH);
通过
frame.add(panel,BorderLayout.CENTER);
在中央,面板将获得面板宽度和高度(减去按钮高度)。