почему мои JLabels и JTextFields не отображаются в JPanel?

У меня есть JDialog, а внутри у меня есть JPanel, который использует FlowLayout

теперь я создал 3 метки и текстовые поля с помощью Netbeans GUI Builder, и я хочу добавить еще 2 текстовых поля с помощью кода

Я скорректировал размер панели, так что, когда я добавляю новую метку и текстовое поле с предпочтительным размером, новый набор меток - текстовое поле будет под предыдущим набором

где-то в JDialog я делаю что-то вроде этого

        JLabel cores = new JLabel("Cores");
        cores.setPreferredSize(new Dimension(70,15));
        first = new JTextField();
        first.setPreferredSize(new Dimension(140,20));
        JLabel power = new JLabel("Power");
        power.setPreferredSize(new Dimension(70,15));
        second = new JTextField();
        second.setPreferredSize(new Dimension(140,20));
        panel2.add(cores);panel2.add(first);panel2.add(power);panel2.add(second);

когда я компилирую программу, метки не отображаются, как и текстовые поля.

когда я спускаюсь и нажимаю, у меня будет следующий результат

http://img684.imageshack.us/img684/13/unledlpy.png

если я что-то напечатаю, появится текстовое поле

http://img5.imageshack.us/img5/6796/unledhig.png

ярлыки не отображаются, я не думаю, что вносил какие-либо изменения в свойства, любая помощь будет оценена, спасибо


person ksm001    schedule 30.09.2011    source источник
comment
Нам нужно увидеть предыдущий код. Какой менеджер по расположению panel2 использует? Как три верхних метки / поля добавляются к panel2? В общем, вы не можете просто произвольно добавить что-то на панель и ожидать, что она будет красиво выглядеть, не давая никаких указаний о том, как это должно быть расположено.   -  person Mark Peters    schedule 30.09.2011
comment
Попробуйте позвонить revalidate() для панели2 после добавления новых элементов управления.   -  person Bala R    schedule 30.09.2011
comment
панель2 использует FlowLayout, остальные три добавляются построителем графического интерфейса Netbeans с функцией initComponents (), которая вызывается в конструкторе, также этот код находится в функции, вызываемой из другого класса, но у меня есть другой код, который другие вещи и не имеют отношения к моей проблеме, поэтому я решил опубликовать небольшую часть   -  person ksm001    schedule 30.09.2011
comment
Попробуйте закомментировать вызовы setPreferSize () для ваших меток и JTextFields и создать свои JTextFields с новым JTextField (15); вызовите revalidate, как предлагает Bala R.   -  person Costis Aivalis    schedule 30.09.2011


Ответы (1)


Определите количество столбцов при создании объекта.
вот так

JTextField jt=new JTextField(20);
person unknown    schedule 17.03.2012