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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Война с LayoutManager-ами скрин с комментами+код 
V
    Опции темы
Killer_13
  Дата 14.7.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 1



Хух, целый день веду борьбу с Лейоутами, все-равно что-то вылазит сколько начитался и каждый пример по своему интересен, а у меня лезут косяки.
Вот код, плюс скрин с комментами, Подскажите, промахи буду благодарен, нужно научиться раз, чтоб больше не спрашивать.
Большое человеческое спасибо наперед.
Все вопросы на картинке.

Код


        private void window(){
        this.setPreferredSize(new Dimension(1024, 768));
        this.setMinimumSize(new Dimension(1024, 768));
        this.setLocation(200, 100);
        this.setContentPane(window_panel);
        //this.setResizable(false);

        window_panel.setLayout(new FlowLayout());
        window_panel.setPreferredSize(new Dimension(1024, 722));
        window_panel.setMinimumSize(new Dimension(1024, 722));
        left_panel.setPreferredSize(new Dimension(124,722));
        content_panel.setPreferredSize(new Dimension(874,722));
        left_panel.setBackground(Color.lightGray);
        content_panel.setBackground(Color.yellow);
        window_panel.add(left_panel);
        window_panel.add(content_panel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        leftPanel();
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        setVisible(true);
    }
    
    private void leftPanel (){
        
        JPanel time_panel = new JPanel();
        JPanel trenn_panel1 = new JPanel();
        JPanel label_panel = new JPanel();
        JPanel trenn_panel2 = new JPanel();
        JPanel frage_panel = new JPanel();
        JPanel trenn_panel3 = new JPanel();
        JScrollPane fragen_scrPane = new JScrollPane(frage_panel);
        
        left_panel.setLayout(new BoxLayout(left_panel, BoxLayout.Y_AXIS));
        time_panel.add(new JLabel("Zeit:"));
        time_panel.setPreferredSize(new Dimension(124,25));
        
        trenn_panel1.setPreferredSize(new Dimension(124,2));
        trenn_panel1.setMinimumSize(new Dimension(124,2));
        trenn_panel1.setBackground(Color.blue);
        
        label_panel.setPreferredSize(new Dimension(124,25));
        label_panel.add(new JLabel("Fragen:"));
        label_panel.setBackground(Color.cyan);
        
        trenn_panel2.setPreferredSize(new Dimension(124,2));
        trenn_panel2.setMinimumSize(new Dimension(124,2));
        trenn_panel2.setBackground(Color.blue);
        
        frage_panel.setLayout(new BoxLayout(frage_panel, BoxLayout.Y_AXIS));
        frage_panel.setPreferredSize(new Dimension(124,666));
        for (int i = 0; i < 60; i++) {
            JLabel b = new JLabel(i + " Frage");
            frage_panel.add(b);
        }
        
        trenn_panel3.setPreferredSize(new Dimension(124,2));
        trenn_panel3.setMinimumSize(new Dimension(124,2));
        trenn_panel3.setBackground(Color.blue);
        
        left_panel.add(time_panel);
        left_panel.add(trenn_panel1);
        left_panel.add(label_panel);
        left_panel.add(trenn_panel2);
        left_panel.add(frage_panel);
        left_panel.add(trenn_panel3);
        
    }



Это сообщение отредактировал(а) Killer_13 - 14.7.2011, 18:40

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Capture.JPG 350,07 Kb
PM MAIL   Вверх
aleksandy
Дата 15.7.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



Код не запускабелен. Приведи код, который можно было бы запустить.

1, 2 тынц
4 тынц

PM   Вверх
Killer_13
  Дата 15.7.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 1



Вот, чуток оптимизировал код, ну тоисть уже с чем-то разобрался, но все равно не срабатывает JScrollPane. В данном случае она нужна и не появляется, а если поставить, чтоб всегда стояла, то все равно не работает. Переделал левую колонку со SpringLayout -интуитивно понятней. 

Как мне убрать отступ между trenn_panel2 и scr_panel?
И еще, скажите пожалуйста, если вручную собирать интерфейс - нужно всегда указывать предпочтительные размеры всего? Или например я в панель добавил 50 меток, и они заняли там все пространство. 

Код.
Код

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.SpringLayout;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;


public class CopyOfV_TestWin extends JFrame {
    
    private JPanel window_panel = new JPanel();
    private JPanel left_panel = new JPanel();
    private JPanel content_panel = new JPanel();

    public static void main(String[] args) {
        new CopyOfV_TestWin();

    }
    
    public CopyOfV_TestWin(){
        window();
    }
    
    private void window(){
        this.setPreferredSize(new Dimension(1024, 768));
        this.setMinimumSize(new Dimension(1024, 768));
        this.setLocation(200, 100);
        this.setContentPane(window_panel);
        //this.setResizable(false);

        window_panel.setLayout(new FlowLayout());
        window_panel.setPreferredSize(new Dimension(1024, 722));
        window_panel.setMinimumSize(new Dimension(1024, 722));
        left_panel.setPreferredSize(new Dimension(124,722));
        content_panel.setPreferredSize(new Dimension(874,722));
        left_panel.setBackground(Color.lightGray);
        content_panel.setBackground(Color.yellow);
        window_panel.add(left_panel);
        window_panel.add(content_panel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        leftPanel();
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        setVisible(true);
    }
    
    private void leftPanel (){
        
        SpringLayout sl = new SpringLayout();
        JPanel time_panel = new JPanel();
        JPanel trenn_panel1 = new JPanel();
        JPanel label_panel = new JPanel();
        JPanel trenn_panel2 = new JPanel();
        JPanel frage_panel = new JPanel();
        JPanel scr_panel = new JPanel();
        JPanel trenn_panel3 = new JPanel();
        JScrollPane fragen_scrPane = new JScrollPane(frage_panel);
        fragen_scrPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
        
        
        left_panel.setLayout(sl);
        left_panel.setBackground(Color.red);
        
        time_panel.add(new JLabel("Zeit:"));
        time_panel.setPreferredSize(new Dimension(124,25));
        time_panel.setBackground(Color.magenta);
        time_panel.add(new JLabel("30:00"));
        
        trenn_panel1.setPreferredSize(new Dimension(124,2));
        trenn_panel1.setMinimumSize(new Dimension(124,2));
        trenn_panel1.setBackground(Color.blue);
        
        label_panel.setPreferredSize(new Dimension(124,25));
        label_panel.setMinimumSize(new Dimension(124,25));
        label_panel.add(new JLabel("Fragen:"));
        label_panel.add(new JLabel("30"));
        label_panel.setBackground(Color.cyan);
        
        trenn_panel2.setPreferredSize(new Dimension(124,2));
        trenn_panel2.setMinimumSize(new Dimension(124,2));
        trenn_panel2.setBackground(Color.blue);
        
        frage_panel.setLayout(new BoxLayout(frage_panel, BoxLayout.Y_AXIS));
        frage_panel.setBackground(Color.orange);
        frage_panel.setPreferredSize(new Dimension(106,660));
        frage_panel.setMinimumSize(new Dimension(106,660));
        
        scr_panel.setBackground(Color.green);
        scr_panel.setPreferredSize(new Dimension(124,666));
        scr_panel.setMinimumSize(new Dimension(124,666));
        
        for (int i = 0; i < 50; i++) {
            JLabel b = new JLabel(i + " Frage");
            frage_panel.add(b);
        }
        
        trenn_panel3.setPreferredSize(new Dimension(124,2));
        trenn_panel3.setMinimumSize(new Dimension(124,2));
        trenn_panel3.setBackground(Color.blue);
        
        scr_panel.add(fragen_scrPane);
        left_panel.add(time_panel);
        left_panel.add(trenn_panel1);
        left_panel.add(label_panel);
        left_panel.add(trenn_panel2);
        left_panel.add(scr_panel);
        left_panel.add(trenn_panel3);
        
        sl.putConstraint(SpringLayout.NORTH, trenn_panel1, 0, SpringLayout.SOUTH, time_panel);
        sl.putConstraint(SpringLayout.NORTH, label_panel, 0, SpringLayout.SOUTH, trenn_panel1);
        sl.putConstraint(SpringLayout.NORTH, trenn_panel2, 0, SpringLayout.SOUTH, label_panel);
        sl.putConstraint(SpringLayout.NORTH, scr_panel, 0, SpringLayout.SOUTH, trenn_panel2);
        sl.putConstraint(SpringLayout.NORTH, trenn_panel3, 0, SpringLayout.SOUTH, scr_panel);
    }

}


PM MAIL   Вверх
Killer_13
Дата 15.7.2011, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 1



Не прошло и дня, разобрал свои вопросы, Вроде чуток подружился с "Лейоутами" Вот оптимизированный код того что меня интересовало, думаю так будет чуток получше? smile

Код

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.SpringLayout;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;


public class CopyOfV_TestWin extends JFrame {
    
    private JPanel window_panel = new JPanel();
    private JPanel left_panel = new JPanel();
    private JPanel content_panel = new JPanel();

    public static void main(String[] args) {
        new CopyOfV_TestWin();

    }
    
    public CopyOfV_TestWin(){
        
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        
        window();
    }
    
    private void window(){
        this.setPreferredSize(new Dimension(1024, 768));
        this.setMinimumSize(new Dimension(1024, 768));
        this.setLocation(200, 100);
        this.setContentPane(window_panel);
        this.setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        window_panel.setPreferredSize(new Dimension(1024, 722));
        window_panel.setMinimumSize(new Dimension(1024, 722));
        left_panel.setPreferredSize(new Dimension(124,722));
        content_panel.setPreferredSize(new Dimension(874,722));
        content_panel.setBackground(Color.yellow);
        window_panel.add(left_panel);
        window_panel.add(content_panel);
        leftPanel();
        
        setVisible(true);
    }
    
    private void leftPanel (){
        
        SpringLayout sl = new SpringLayout();
        JPanel time_panel = new JPanel();
        JPanel label_panel = new JPanel();
        JPanel frage_panel = new JPanel();
        JPanel scr_panel = new JPanel(new BorderLayout());
        JScrollPane scrPane = new JScrollPane(frage_panel);
        scrPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
        
        left_panel.setLayout(sl);
        
        time_panel.add(new JLabel("Zeit:"));
        time_panel.add(new JLabel("30:00"));
        time_panel.setPreferredSize(new Dimension(124,25));
        time_panel.setBorder(BorderFactory.createSoftBevelBorder(BevelBorder.RAISED, Color.gray, Color.black, Color.gray, Color.black));
        
        label_panel.add(new JLabel("Fragen:"));
        label_panel.add(new JLabel("30"));
        label_panel.setPreferredSize(new Dimension(124,25));
        label_panel.setBorder(BorderFactory.createSoftBevelBorder(BevelBorder.RAISED, Color.gray, Color.black, Color.gray, Color.black));
        

        scr_panel.setPreferredSize(new Dimension(124,660));
        scr_panel.setMinimumSize(new Dimension(124,660));
        scr_panel.setBorder(BorderFactory.createSoftBevelBorder(BevelBorder.RAISED, Color.gray, Color.black, Color.gray, Color.black));
        
        frage_panel.setLayout(new BoxLayout(frage_panel, BoxLayout.Y_AXIS));
        
        for (int i = 1; i <= 100; i++) {
            JLabel b = new JLabel("   " + i + " Frage");
            frage_panel.add(b);
        }
        
        scr_panel.add(scrPane);
        left_panel.add(time_panel);
        left_panel.add(label_panel);
        left_panel.add(scr_panel);
        
        sl.putConstraint(SpringLayout.NORTH, label_panel, 5, SpringLayout.SOUTH, time_panel);
        sl.putConstraint(SpringLayout.NORTH, scr_panel, 5, SpringLayout.SOUTH, label_panel);
    }

}


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

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

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


 




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


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

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