kly*_*aek 10 java swing jframe
我有一个JFrame.
我还有一个扩展Component的Box类.这个box类有一个paint方法,它可以生成一个填充的矩形.
当我将多个这些Box组件添加到我的JFrame时,当我在JFrame上调用repaint时,只显示最近添加的一个.
我看了一下布局管理器,但我不确定这是我想要的.我想要的就是能够在屏幕上的任何地方制作一大堆矩形的动画.
(我也尝试创建一个面板,将面板添加到JFrame,然后将所有Box组件添加到面板.这也不起作用).
提前致谢!
jjn*_*guy 10
你有2个选择.
您可以更改框架的布局:
JFrame frame;
frame.setLayout(new FlowLayout());
Run Code Online (Sandbox Code Playgroud)
现在,如果您添加多个框,它将显示在框架上.
另一种选择是做你说过的尝试.(将面板添加到框架中)
JPanel pane = new JPanel();
frame.add(pane);
(add the boxes to 'pane')
Run Code Online (Sandbox Code Playgroud)
此外,你应该小心你的大小Box.你可能想要setPreferredSize()在创建的某个地方打电话Box.这将告诉Java在添加到布局时框的大小.
您还应该查看Java布局管理器教程.那里有很多很棒的信息.
还有一件事.原因是框架上一次只显示一个框是因为JFrame的布局管理器是BorderLayout.并且,当您调用add具有BorderLayout的组件时,该组件会自动添加到组件的中心.后续调用add将覆盖中心组件,中间只留下一个组件.