2014-02-03 2 views
0

Итак, у меня есть один объект jFrame, который, в свою очередь, прикреплен к нему 3 JPanels. Эти JPanels размещены на СЕВЕРЕ, ЦЕНТРЕ, ЮЖНОМ. Я добавил несколько кнопок и меток в CENTER и SOUTH.Почему мои компоненты исчезают при добавлении в панель?

Я добавил несколько полей на СЕВЕР и ЦЕНТР, чтобы придать ему более приятный вид. Теперь, когда я пытаюсь запустить программу, она ничего не показывает. Мои кнопки и метки исчезают, и мои наборы полей нигде не найдены. Что я делаю неправильно?

Благодарим вас за время.

public General() { 
    super("OmniTool"); 
    initComponents(); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocation(300,100); 
    setVisible(true); 
    setResizable(true); 
    setSize(900, 700); 

    //radiobuttons ivm dependencies 
    ButtonGroup dependenciesInfo = new ButtonGroup(); 
    dependenciesInfo.add(rdbYesDependencies); 
    dependenciesInfo.add(rdbNoDependencies); 
    //boolean om te controleren of alle textareas al ingevuld zijn 
    generalInfoComplete = false; 

    //creating 3 panels and add them on the same frame + giving them their location 
    JPanel oudeMod = new JPanel(); 
    JPanel nieuweMod = new JPanel(); 
    JPanel generate = new JPanel(); 
    this.add(oudeMod,BorderLayout.NORTH); 
    this.add(nieuweMod,BorderLayout.CENTER); 
    this.add(generate,BorderLayout.SOUTH); 
    oudeMod.setBorder(BorderFactory.createTitledBorder("Use exisiting modfolder")); 
    nieuweMod.setBorder(BorderFactory.createTitledBorder("Create new modfolder")); 

    //adding buttons and textfields to proper panels 

    nieuweMod.add(jLabel2); 
    nieuweMod.add(jLabel3); 
    nieuweMod.add(jLabel4); 
    nieuweMod.add(jLabel5); 
    nieuweMod.add(jLabel7); 
    nieuweMod.add(jLabel8); 
    nieuweMod.add(jLabel9); 
    nieuweMod.add(jLabel10); 
    nieuweMod.add(btnBrowseMain); 
    nieuweMod.add(btnBrowseMods); 
    nieuweMod.add(btnDependencies); 
    nieuweMod.add(rdbNoDependencies); 
    nieuweMod.add(rdbYesDependencies); 
    nieuweMod.add(txtDependencies); 
    nieuweMod.add(txtMainDir); 
    nieuweMod.add(txtModName); 
    nieuweMod.add(txtModsDir); 
    generate.add(btnGenerate); 
} 

EDIT1: Эти jFrames находятся на 1 jtabbedPane.

ответ

1

Если «это» является JFrame, this.add (...) не будет работать. Вы должны добавить свои компоненты в contentPane JFrame.

+0

Вы имеете в виду this.getContentPane(). Add (...)? – BURNS

+0

Да, вот что я имел в виду – Janos

+0

Нет, не работал. Я забыл упомянуть, что на панели JFrame есть tabbedPane. Я попробовал this.jTabbedPane1.add (...), и я только закончил с новой вкладкой вместо JFrame, добавленной на текущую вкладку. – BURNS

0

«Так что у меня есть один JFrame объект, который, в свою очередь, имеет 3 JPanels прикрепленную к нему. Эти JPanels расположены на севере, в центре, на юге. Я добавил некоторые кнопки и метки к центральной и южной.»

Каждое положение BorderLayout может содержать только один компонент. Если вы добавите JPanel в CENTER, то добавьте JButton в CENTER только последний добавленный компонент (JButton).

Добавьте все компоненты, которые вам необходимы, до макс. 5 JPanel s и установите их JPanel на различные позиции BorderLayout. Или вы можете использовать другой макет. Или вы можете использовать основной контейнер JPanel и просто добавить JPanel к фрейму. У вас много вариантов.


сделать также все ваши JFrame уборка после вы добавляете все компоненты. Поместите их в конец вашего конструктора.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
setLocation(300,100); 
setVisible(true); 
setResizable(true); 
setSize(900, 700); 

Не задавайте размер. Только pack(). И setVisible() должно быть последним, что вы делаете.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
pack(); 
setLocationRelativeTo(null); 
setResizable(true); 
setVisible(true); 
Смежные вопросы