新手在這裏。JButton顯示在父面板之外(?)
我試圖創建一個框架,其中有一個黑色的面板來創建一些動畫,以及一個UI面板來放置控制按鈕。但是當我創建JButton並將它們添加到UI面板時,它們看起來不在UI面板中。
我認爲這是因爲佈局,但我不能決定哪種佈局最適合我的情況。試過GridLayout,GridBoxLayout,BoxLayout ...他們都沒有看起來好,我很確定我失去了一些東西。
Oracle文檔非常豐富,但我不能說它對我有很大的幫助,無法理解佈局。
這裏是我的代碼: 我編輯了我的代碼,這要歸功於Berger的回答,但仍然有問題,所以我更新了代碼和截圖以便清楚。
沒關係,我忘了修理一些零件,伯傑的答案是perfeclty工作。謝謝!
import java.awt.*;
import javax.swing.*;
public class gui {
public static void InitializeGUI(){
//DEFINE MAIN FRAME
JFrame window = new JFrame("Simulator");
window.setSize(1000, 1000);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null);
//DEFINE UNIVERSE PANEL
JPanel universe = new JPanel(){
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Dimension getPreferredSize() {
return new Dimension(window.getContentPane().getSize().width, 3 * window.getSize().height/4);
}
};
universe.setBackground(Color.BLACK);
//DEFINE UI PANEL
JPanel ui = new JPanel() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Dimension getPreferredSize() {
return new Dimension(window.getContentPane().getSize().width, window.getSize().height/4);
}
};
//DEFINE BUTTONS
JButton femalespawnbutton = new JButton("Spawn Female");
femalespawnbutton.setSize(150, 100);
JButton malespawnbutton = new JButton("Spawn Male");
malespawnbutton.setSize(150, 100);
//FILL
ui.add(femalespawnbutton, BorderLayout.CENTER);
ui.add(malespawnbutton, BorderLayout.CENTER);
window.add(universe, BorderLayout.NORTH);
window.add(ui, BorderLayout.SOUTH);
window.setVisible(true);
}
}
感謝您的回覆,這真的很有幫助,我想明白爲什麼我應該避免給對象提供確切的措施。 即使我想通過重寫prefferedSize方法成功地將我的** **和** ui **面板放在正確的方法中,我仍然有問題。 我的按鈕仍然不在UI面板上,其中一個按鈕是隱藏的,直到我將鼠標移到它上面。 隨着你的回答,我明白,按鈕並不是實際上不在面板之外,它只是我的**宇宙**面板位於** ui **面板之上並覆蓋了它的一部分。但是,如何?以爲我固定面板尺寸? –
下面是截圖: http://prnt.sc/ef4zsk http://prnt.sc/ef4zwl 和我的代碼的更新版本: http://prnt.sc/ef515q –
確實很好,看起來窗口的高度考慮了標題欄,您可以使用'window.getContentPane()。getSize()'代替,我將編輯答案。 – Berger