我有一个名为BallTask的简单类,该类可使球四处移动并跳出框架的界限。我正在尝试应用可用于停止线程并启动线程的按钮,但是我一直坚持将按钮面板固定在底部。
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame window = new JFrame();
window.setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setContentPane(new BallTask());
JPanel buttons = new JPanel();
JButton stop = new JButton("Stop");
JButton start = new JButton("Start");
buttons.add(start);
buttons.add(stop);
window.add(buttons,BorderLayout.SOUTH);
window.pack();
window.setVisible(true);
}
});
}
我可以想象问题出在设置window.setContentPane上,但是BallTask只是一个Jpanel,所以我认为如果我添加另一个面板,由于布局的原因,它只会放在它的下面。但是,按钮出现在框架的顶部。有任何想法吗?
最佳答案
您正在使BallTask
您的内容窗格。因此,将buttons
添加到BallTask
中。 JPanel
(BallTask)具有默认的FlowLayout
。如果要BallTask
占据CENTER
,而buttons
占据SOUTH
,则只需window.add(new BallTask())
而不是setContentPane(new BallTask())
。或者,如果需要底部BallTask
面板上的BorderLayout
,则将buttons
的布局设置为BallTask
。