7

JFrameに2つのオブジェクトを表示したい。JPanelにオブジェクトを追加してからJFrameにJPanelを追加してみましたが、うまくいきませんでした。また、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);  
4

3 に答える 3

5

JPanelを使用して、両方のJPanelを子として保持し、1つのJPanelをJFrameコンテンツペインに追加することをお勧めします。

別のレイアウト位置を明示的に指定しない場合、JFrame.add()メソッドへの2番目の呼び出しは、最初に追加されたJPanelを置き換えます。

BoxLayoutを使用した簡単な例:

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

mainPanel.add(contentPane);
mainPanel.add(contentPane1);
contentPane.add(mainPanel);
于 2012-10-03T14:32:41.547 に答える
4

のコンテンツ ペインにJFrameBorderLayout、デフォルトでレイアウト マネージャーがあります。つまり、コンポーネントを追加すると、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 );

または、コンテンツ ペインにコンポーネントを追加するときに、配置する場所を指定します (さらに別の場所を指定します)。

JFrame f = new JFrame();

f.getContentPane().add( new JButton( "One" ), BorderLayout.NORTH );
f.getContentPane().add( new JButton( "Two" ), BorderLayout.CENTER );
于 2012-10-03T14:32:16.247 に答える