我無法使用 componentZOrder() 方法正確設置 Ball Boundspublic class gamearea extends JFrame{ private Toolkit toolkit = Toolkit.getDefaultToolkit(); private Cursor c; JLabel ball = new JLabel(); JLabel desk = new JLabel();構造函數 Gamearea(){ addMouseMotionListener(this); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setMaximumSize(new Dimension(800, 600)); setMinimumSize(new Dimension(800, 600)); setLayout(null); desk.setIcon(new ImageIcon(getClass().getResource("/images/table.png")));從文件夾中獲取圖像 ball.setIcon(new ImageIcon(getClass().getResource("/images/bball.png"))); desk.setBounds(0,0,800,600);球出現但不在正確的位置 ball.setBounds(356,328,25,25); add(desk); add(ball); setComponentZOrder(desk,1); setComponentZOrder(ball,0); setVisible(true); }}
2 回答

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
你的gamearea類的內容窗格的布局管理器是什么?如果你沒有設置它,它默認為一個BorderLayout,然后當你向它添加兩個組件時,第一個進入CENTER,第二個將替換首先在中心。
您的組件不應是 JFrame 的子類。讓它擴展 JPanel 并使用適當的 LayoutManager 將子項放置在面板中,然后將該面板添加到您隨后顯示的 JFrame 中。
此外,您應該遵循 Java 約定并以大寫字母開頭類的名稱(GameArea 或 Gamearea,而不是 gamearea)。

GCT1015
TA貢獻1827條經驗 獲得超4個贊
如果你想在你的程序中正確實現 setComponentZOrder(),你必須在面板中添加對象,然后你可以使用 setComponentZOrder。
panel.setLayout(null);
panel.add(desk);
panel.add(ball);
panel.setComponentZOrder(ball,0);
panel.setComponentZOrder(desk,1);
setContentPane(panel);
desk.setBounds(0,0,800,600);
ball.setBounds(375,232,25,25);
添加回答
舉報
0/150
提交
取消