我想知道我們是否可以有一個JPanel,其佈局不是它的父JFrame。例如。如果我有帶邊框佈局的JFrame,並且我們有一個嵌入的JPanel,並且它有不同的佈局。可能嗎 ?JPanel具有不同的佈局,它的JFrame
我正在努力做到這一點。但是這樣JPanel的組件沒有顯示出來。
這裏來詳細的問題:我有一個JFrame和佈局是邊框式佈局
。我在這個框架上添加一個JPanel。如果我不爲JPanel設置任何佈局。 JPanel的所有組件都顯示在窗口上,但是當我爲JPanel設置網格佈局時,JPanel的組件不可見。我將Layout添加到JPanel以便對齊組件。以下是我的代碼:
我有一個主類,一個框架類和Jpanel類。
public class AppMain {
public static void main(String[] args) {
AppPage1 page1 = new AppPage1("test");
page1.setVisible(true);
}
}
public class AppPage1 extends JFrame {
public AppPage1(String title) throws HeadlessException {
super(title);
this.setLayout(new BorderLayout());
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
setExtendedState(MAXIMIZED_BOTH);
}
});
//Panel for logo
JLabel testLogo = new JLabel("");
testLogo.setIcon(new javax.swing.ImageIcon("test.JPG"));
List<JComponent> componentList = new ArrayList<JComponent>();
componentList.add(testLogo);
PagePanel logoPanel = new PagePanel(componentList,null);
this.add(logoPanel, BorderLayout.NORTH);
//Panel for Button and checkboxes
JLabel panelTitle = new JLabel("test Wizard");
JRadioButton rdButton_ExistingConfigurationFile = new JRadioButton("Existing Configuration File");
JRadioButton rdButton_ConfigureNewPropertyFile = new JRadioButton("Configure new Property File");
componentList = new ArrayList<JComponent>();
componentList.add(panelTitle);
componentList.add(rdButton_ExistingConfigurationFile);
componentList.add(rdButton_ConfigureNewPropertyFile);
PagePanel buttonPanel = new PagePanel(componentList,new GroupLayout(this));
this.add(buttonPanel, BorderLayout.CENTER);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
validate();
}
}
public class PagePanel extends JPanel {
public PagePanel(List<JComponent> componentList, LayoutManager layOutManager) {
this.setBackground(Color.decode("#4E6987"));
if (layOutManager != null) {
this.setLayout(null);
}
for (JComponent jComponent : componentList) {
jComponent.setBackground(Color.decode("#4E6987"));
this.add(jComponent);
}
}
}
由於提前 拉維·庫馬爾
是的,這是可能的。雖然爲什麼它不會發生在你身邊,爲此你需要準確地展示你在做什麼!這將有助於任何人回答你,所以你的一些代碼將非常感激。默認情況下'JFrame具有BorderLayout'和'JPanel具有FLowLayout',所以不需要做任何事情,只需在你的'JPanel'上添加組件並將其添加到你的'JFrame'中而不需要其他任何行,你將得到「YES」作爲答案您的問題:-) –
當然,您可以爲層次結構的每個組件分配不同的佈局管理器。默認情況下,JPanel使用FlowLayout。如果遇到麻煩,請發佈[SSCCE](http://sscce.org)以獲得更好的幫助。 –