我知道使用null Layout
不是一个很好的方法来制作GUI
应用程序,但我认为这是一个我应该使用它的情况。
我有一个由LayoutManager
管理的JPanel
,在这个JPanel中有几个JPanel。特别是,在特定的JPanel中,我必须绘制线条并在这些线条的末尾添加我创建的一些JComponent
。
简而言之,我所做的是这样的
JPanel p=new JPanel();
p.setLayout(null);
.....
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
......
g.drawLine(0,0,50,50);
JComponent s=new myJComponent();
s.setBounds(50,50,10,10);
this.add(s);
.......
}
我的问题,也许有点哲学,是这样的:在这个特定的上下文中使用null布局正确吗?我没有找到任何替代品,因为我在行尾添加了我的组件,这个任务必须在paintComponent
方法中完成。
提前感谢你的提示
如果你的面板中没有组件,那么null布局是有意义的,你没有什么布局,所以没有布局管理器。
如果你要添加组件,那么你应该使用布局管理器来布局它们,即使这意味着你要自己编写。
你绝对不应该在paintComponent
中添加一个新组件。
我认为你很困惑,要么你想覆盖paintComponent
并绘制线条,要么你想添加绘制线条的控件,而不是覆盖paintComponent
。