Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GroupLayout, не выводяться компоненты на панельке  
:(
    Опции темы
Christoph
Дата 8.3.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 3
Всего: 11



Создаю форму, затем создаю 2 панельки, к форме применяю BorderLayout к панельке GroupLayout, приведу код

Код

public execute()
    {
        Frame = new JFrame("DataBaseClient");
        Frame.setSize(600,300);
        Frame.setLayout(new BorderLayout());
        Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Frame.setVisible(true);
            
       panelLayout = new GroupLayout(loginPanel);
       loginPanel.setBorder(BorderFactory.createLineBorder(Color.GRAY, 5));

       viewPanel = new JPanel (new FlowLayout());
       viewPanel.setBorder(BorderFactory.createLineBorder(Color.GRAY, 10));

        Frame.getContentPane().add(loginPanel,BorderLayout.PAGE_START);  
        Frame.getContentPane().add(viewPanel,BorderLayout.CENTER);

        loginLabel = new JLabel("Login");
        passwordLabel = new JLabel("Password");
        loginText = new JTextField(20);
        passText = new JPasswordField(20);
        loginButton = new JButton("Login");


        setLayoutForLoginPanel();
        loginPanel.setLayout(panelLayout);

        loginLabel.setLabelFor(loginText);
        passwordLabel.setLabelFor(passText);

       loginPanel.setVisible(true);
        
    }


    public void setLayoutForLoginPanel()
    {
        panelLayout.setHorizontalGroup(panelLayout.createSequentialGroup()
                .addComponent(loginLabel)
                .addComponent(loginText)
                .addComponent(passwordLabel)
                .addGroup(panelLayout.createParallelGroup()
                    .addComponent(passText)
                    .addComponent(loginButton))
                    );
        panelLayout.setVerticalGroup(panelLayout.createSequentialGroup()
                .addGroup(panelLayout.createParallelGroup()
                    .addComponent(loginLabel)
                    .addComponent(loginText)
                    .addComponent(passwordLabel)
                                )
                .addComponent(loginButton)
                    );
    }

 private JFrame Frame;

    private JPanel loginPanel;
    private JPanel viewPanel;

    private JLabel loginLabel;
    private JLabel passwordLabel;

    private JTextField loginText;
    private JPasswordField passText;
    private JButton loginButton;

    private GroupLayout panelLayout;


}


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


--------------------
user posted image
PM MAIL ICQ   Вверх
Connie
Дата 9.3.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Christoph, чего то у тебя все в перемешку.

Такие вопросы:
Где инициализируется loginPanel?

Вместо такого метода
Код

public void setLayoutForLoginPanel()
    { .... }


Лучше написать так:
Код

private JComponent createLoginPanel(){
//Тут создать панель с нужным layout
//и отдать ее через return

}


Пример моего кода
Код

private JComponent createTopPane(){
        MyFocusListener fcLst = new MyFocusListener();


        JPanel pane = new JPanel();
        JLabel lblLogin = new JLabel(settings.getIn().StrSize("Логин:"));
        lblLogin.setHorizontalAlignment(SwingConstants.TRAILING);
        fldLogin = new JTextField();
        Font fn = settings.getIn().getFont(fldLogin.getFont());
        fldLogin.setFont(fn);
        fldLogin.setColumns(20);
        fldLogin.setText(inetData.getLogin());
        fldLogin.addFocusListener(fcLst);
        
        JLabel lblPass = new JLabel(settings.getIn().StrSize("Пароль:"));
        lblPass.setHorizontalAlignment(SwingConstants.TRAILING);
        fldPass = new JPasswordField();
        fldPass.setFont(fn);
        fldPass.setColumns(20);
        fldPass.setText(inetData.getPass());
        

        JLabel lblServer = new JLabel(settings.getIn().StrSize("Адрес сервера:"));
        lblServer.setHorizontalAlignment(SwingConstants.TRAILING);
        fldServer = new JTextField(inetData.getServer());
        fldServer.setFont(fn);
        fldServer.setColumns(20);
        fldServer.setEditable(false);
        fldServer.addFocusListener(fcLst);
        fldServer.addMouseListener(new MouseAdapter(){
            @Override
            public void mouseClicked(MouseEvent e){
                if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount()%2==0){
                    ((JTextField)e.getSource()).setEditable(true);
                    ((JTextField)e.getSource()).removeMouseListener(this);
                }
            }
        });
        
        GroupLayout layout = new GroupLayout(pane);
        pane.setLayout(layout);

        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        layout.setHorizontalGroup(
            layout.createParallelGroup()
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblServer, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(fldServer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                )
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblLogin, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(fldLogin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                )
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblPass, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(fldPass, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                )
               
          );

        layout.setVerticalGroup(
            layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup()
                    .addComponent(lblServer)
                    .addComponent(fldServer)
                )
                .addGroup(layout.createParallelGroup()
                    .addComponent(lblLogin)
                    .addComponent(fldLogin)
                )
                .addGroup(layout.createParallelGroup()
                    .addComponent(lblPass)
                    .addComponent(fldPass)
                )
                
        );

        return pane;
    }


Еще одно пожелание, для наименования классов, методов, переменных использовать общепринятую нотацию, так и тебе будет проще код разбирать и другим читать его. К примеру
execute() - это что? Судя по коду конструктор, тогда класс должен называться execute? Ничего не говорящее название, лучше так класс - ExecuteMyCoolProgram - название класса, ну и конструктор будет
Код

public ExecuteMyCoolProgram(){...}


Так же и с названием переменных, что за переменная Frame? - так должен называться класс, переменная должна быть frame. Это конечно придирки, можешь и так сказать, но читать код, написанный по общепринятым стандартам проще всем. Я как то в НетБинсе использовал переменную имя которой было из русских букв, НетБеанс переварил и это, но делать так не стоит smile

в конце конструктора execute() добавь метод Frame.pack(); А лучше все переписать с нуля.


Вот набросаю примерную схему:
Код

public class ExecuteMyCoolProgram() extends JFrame{
 public ExecuteMyCoolProgram(){
 
        setTitle("DataBaseClient");
        setLayout(new BorderLayout());

        add(createLoginPane(),BorderLayout.NORTH);
        add(createViewPanel(),BorderLayout.CENTER);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(600,300);
        setVisible(true);
}
//Нужно добавить методы создающие панель логина и панель вывода информации

public static void main(String[] args) {
  ExecuteMyCoolProgram prog = new ExecuteMyCoolProgram();
}
}



Это сообщение отредактировал(а) Connie - 9.3.2010, 11:03
PM MAIL WWW   Вверх
batigoal
Дата 9.3.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Christoph, не код, а макароны.

Во-первых, у тебя получается дикая мешанина с названиями. Слово "Frame" у тебя фигурирует и как имя класса, и как имя переменной, плюс еще есть одноименный стандартный класс. Следуй правилам именования, принятым в Java, и называй переменные с маленькй буквы.

Во-вторых, у меня вылетает эксепшн: Container must be non-null в строке 9. И это неудивительно, учитывая, что ты нигде не создаешь loginPanel.

Переупорядочи код, ты же сам в нем запутаешься.




Это сообщение отредактировал(а) batigoal - 9.3.2010, 11:07


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.