描述:我一直在研究這個小項目,我需要根據傳遞的參數(1-4)將一個特定的JPanel從一個類發送到主JFrame。 。在我的主課堂中,我設置了一個JFrame,以便我可以直觀地檢查正在傳遞的面板。將JPanel添加到JFrame失去組織組件的能力 - Java
什麼行不通
裏面的「訪問器類」,我似乎無法在面板的中間位置到JComboBox的。另外,我不太確定我可以做任何類型的定位。我之前使用完全相同的代碼實現了一個按鈕(我替換了JComboBox),我也無法調整按鈕大小。但是...我可以改變它的顏色。
GridBagLayout應該以默認值爲中心。爲什麼這被覆蓋?如果您查看提供的圖片/鏈接,它會自動轉到頂部中心。我根本無法移動它。
這個問題是我從班級接收JPanel的方式的結果。有沒有更好的方式可以稱爲面板?
對不起,缺乏清晰度。努力領悟Java中的一些基本概念。
任何幫助表示讚賞。
這是主要的類
public static void main(String[] args) {
Accessor accessorOne = new Accessor(1); //Creates the Panel with param 1
JFrame frame = new JFrame("Testing");
frame.setLayout(new GridLayout(2,2));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));
frame.add(new JButton("Button 4"));
frame.add(accessorOne); //Adds the Panel to the last spot in the JFrame
frame.setSize(650, 600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
這是 「訪問器」 類定義面板
public class Accessor extends JPanel{
JPanel panel = new JPanel();
public Accessor(int num){
if(num == 1){
panel.setLayout(new GridBagLayout());
String[] choice1 = {"Testing One", "Testing two" };
JComboBox choiceBoxOne = new JComboBox(choice1);
choiceBoxOne.setBackground(Color.red); //These changes are correctly reflected!
panel.add(choiceBoxOne);
choiceBoxOne.setLocation(300,300); //ERROR -> Setting this value changes nothing!
add(panel);
}
// Other num options
}
}
This is the photo of the Jframe
經過一些更多的測試後,它必須是我從其他類調用jpanel的方式。如果我在主要方法中直接設置面板,則所有佈局都可以正常工作。 – ghujkil2
Dude,由於Accessor類正在擴展JPanel,爲什麼要創建一個JPanel類?您應該將choiceBoxOne添加到Accessor類而不是您的JPanel對象。而且,您應該將Layout設置爲Accessos類,而不是JPanel對象。 –