簡體   English   中英

如何在Java中向一個JFrame添加2個或更多對象?

[英]How to add 2 objects or more to one JFrame in Java?

我試過看,但沒有問題有幫助。 這是我開始的代碼:

    Player player = new Player();
    Block1 block1 = new Block1();
    JFrame ow = new JFrame();
    ow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ow.setSize(500,500);
    ow.setTitle("My Game");
    ow.setVisible(true);
    ow.setLocation(400, 100);
    ow.add(block1);
    ow.add(player);

但它只會添加最后一個,有人說(當我搜索舊問題時)它會刪除前一個,因為它們都在同一個位置。 所以我這樣修改了它:

    JPanel jp = new JPanel();
    jp.setSize(500, 500);
    Player player = new Player();
    Block1 block1 = new Block1();
    JFrame ow = new JFrame();
    jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
    jp.add(player);
    jp.add(block1);
    ow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ow.setSize(500,500);
    ow.setTitle("My Game");
    ow.setVisible(true);
    ow.setLocation(400, 100);
    ow.add(jp);

它確實有效,將它們都看得見但是......它有兩個方形面板,所以我不能靠近我的player block 1 有幫助嗎?

默認情況下,JFrame使用BorderLayout 如果您沒有指定放置組件的位置,那么它將放在BorderLayout.CENTER 您不能將2個或更多組件放在同一位置。 要防止出現這種不良行為,您必須設置不同的約束。

例如:

jframe.add(someComponent, BorderLayout.LINE_END);//constraint indicating position

閱讀更多教程: 如何使用BorderLayout

如果此布局不符合您的需要,請嘗試使用另一個LayoutManager或混合它們。

看看LayoutManagers的可視指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM