我有一个名为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

09-27 21:07