将两个或更多对象添加到JFrame

use*_*353 7 java layout swing jframe

我想在JFrame上显示2个对象.我尝试将对象添加到JPanel,然后将JPanel添加到JFrame,但它也无法正常工作.我还尝试将ball和ball1对象直接添加到JFrame,但它仅显示最后添加的对象.我想一次在JFrame上显示两个对象.下面给出的代码只显示了ball1对象.

    JFrame f = new JFrame("Moving"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //making 2 objects 
    Ballbewegung2 ball = new Ballbewegung2();
    Ballbewegung3 ball1 = new Ballbewegung3(); 
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel contentPane1 = new JPanel(new BorderLayout());

    //adding objects to JPanel
    contentPane.add(ball, BorderLayout.CENTER);                 
    contentPane1.add(ball1, BorderLayout.CENTER);                 

    //Adding JPanel to JFrmae
    f.getContentPane().add(contentPane);
    f.getContentPane().add(contentPane1);
    f.setSize(500, 500);
    f.setVisible(true);  
Run Code Online (Sandbox Code Playgroud)

Hei*_*bug 5

我建议您使用JPanel将JPanels作为子项保存,并将单个JPanel添加到JFrame内容窗格.

如果您没有明确指定不同的布局位置,则第二次调用JFrame.add()方法将替换第一个添加的JPanel.

使用BoxLayout的一个简单示例:

JPanel mainPanel= new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

mainPanel.add(contentPane);
mainPanel.add(contentPane1);
contentPane.add(mainPanel);
Run Code Online (Sandbox Code Playgroud)


icz*_*cza 4

默认情况下,内容窗格JFrame具有BorderLayout布局管理器。这意味着如果您向其中添加一个组件,它将被放置在中心。如果您向其中添加另一个组件,它将再次放入 CENTER 中并替换之前添加的组件。

如何添加多个组件的示例:

JFrame f = new JFrame();

JPanel p = new JPanel();

p.add( new JButton( "One" ) );
p.add( new JButton( "Two" ) );

f.getContentPane().add( p, BorderLayout.CENTER );
Run Code Online (Sandbox Code Playgroud)

或者将组件添加到内容窗格时,指定放置它的位置(并指定不同的位置):

JFrame f = new JFrame();

f.getContentPane().add( new JButton( "One" ), BorderLayout.NORTH );
f.getContentPane().add( new JButton( "Two" ), BorderLayout.CENTER );
Run Code Online (Sandbox Code Playgroud)