powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / использование JSplitPane в свинге и другие вопросы.
13 сообщений из 13, страница 1 из 1
использование JSplitPane в свинге и другие вопросы.
    #38992751
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
С недавнего времени начал создавать приложение простое приложение, но к сожалению столкнулся с некоторыми вопросами:

Компонентная схема:


1. Когда запускаю приложение в главная форма MainFrame которая есть JFrame не открывается в полноразмерном виде, только по клику квадрата в правом верхнем углу. Как сделать чтоб это происходило автоматически в момент старта программы?

2. В LeftPane использовал JTree при открытии также не раскрывается полностью, а видна только часть. Использовал JSplitPane - чтоб изменить размер приходиться двигать руками. С помощью чего задается размер Jpanel, JTree чтоб при открытии - все было красиво?


3. Не могу понять как сделать чтоб HORIZONTAL_STLIT(Бар который разделяет и меняет размер панелей) LeftPane и RightPane имел возможность крепиться на VERTICAL_SPLIT который разделяет UpForm и DownForm?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public class MainForm extends JFrame{
     
     LeftPane lp;
     RightPane rp;
     JSplitPane sp;
     TopPanel tp;
     BottomPanel bp;
      
    public MainForm() throws HeadlessException {
         
        super("meta-nalog-365");
        lp = new LeftPane();
        rp = new RightPane();
        sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, lp, rp );
        tp = new TopPanel();
        bp = new BottomPanel();
         
         
        sp.setPreferredSize(new Dimension(200, 600));
        tp.setPreferredSize(new Dimension(800, 100));
        bp.setPreferredSize(new Dimension(800,50));
         
        setLayout(new BorderLayout());
         
        add(BorderLayout.NORTH, tp);
        add(BorderLayout.CENTER,sp);
        add(BorderLayout.SOUTH, bp);
         
        setSize(800, 800);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);   
    }



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
package test_swing;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
 
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
 
public class RightPane extends JPanel{
     
    UpForm upf;
    JSplitPane sp;
    DownForm df;
     
    public RightPane() {
         
        upf = new UpForm();
         
        upf.setPreferredSize(new Dimension(1200,400));
         
        df = new DownForm();
         
        df.setPreferredSize(new Dimension(1200,400));
         
        setLayout(new GridBagLayout());
         
        GridBagConstraints gc = new GridBagConstraints();
         
         sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT,upf, df);
 
         gc.gridx = 0;
             
         gc.gridy = 0;
              
         add(sp, gc);
         
    }
 
}



4. Я хочу уменьшить расстояние между кнопками JButtons in GridBagLayout. Как показано на картинке:



У меня получилось это сделать с помощью объекта isets:
авторgc.insets = new Insets(0,10,0,0);
gc.insets = new Insets(0,-950,0,0);

Это правильно? или есть какой-то более легкий способ?
Вот код на примере двух кнопок:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
gc.gridx = 0;
    gc.gridy = 1;
    gc.fill = GridBagConstraints.NONE;
    gc.anchor = GridBagConstraints.FIRST_LINE_START;
    gc.insets = new Insets(0,10,0,0);
    add(add, gc);
     
    gc.gridx = 1;
    gc.gridy = 1;
    gc.fill = GridBagConstraints.NONE;
    gc.insets = new Insets(0,-950,0,0);
    gc.anchor = GridBagConstraints.FIRST_LINE_START;
    add(open, gc);


Спасибо!
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38992773
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann1. Когда запускаю приложение в главная форма MainFrame которая есть JFrame не открывается в полноразмерном виде, только по клику квадрата в правом верхнем углу. Как сделать чтоб это происходило автоматически в момент старта программы?

Google -> Maximize JFrame


Dr.Hofmann2. В LeftPane использовал JTree при открытии также не раскрывается полностью, а видна только часть. Использовал JSplitPane - чтоб изменить размер приходиться двигать руками. С помощью чего задается размер Jpanel, JTree чтоб при открытии - все было красиво?

RTFM
https://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html
http://docs.oracle.com/javase/7/docs/api/javax/swing/JSplitPane.html
setDeviderLocation

Dr.Hofmann3. Не могу понять как сделать чтоб HORIZONTAL_STLIT(Бар который разделяет и меняет размер панелей) LeftPane и RightPane имел возможность крепиться на VERTICAL_SPLIT который разделяет UpForm и DownForm?

Ну, там из-за LayoutManager отступ какой-то нарисовался.

Dr.Hofmann4. Я хочу уменьшить расстояние между кнопками JButtons in GridBagLayout. Как показано на картинке:

MigLayout + WindowBuilderPro - лучшая комбинация для Swing разработки. В MigLayout есть замечательный режим отладки, который снимает все вопросы "почему так получилось". И для ручного кодирования он на голову удобнее GridBagLayout.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38992777
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczsetDeviderLocation

Ну, Divider же.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38992828
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGoogle -> Maximize JFrame

Использовал setExtendedState(JFrame.MAXIMIZED_BOTH);

BlazkowiczRTFM
https://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html
http://docs.oracle.com/javase/7/docs/api/javax/swing/JSplitPane.html
setDeviderLocation


Мне помогло sp.setResizeWeight(0.15d);

BlazkowiczMigLayout + WindowBuilderPro - лучшая комбинация для Swing разработки. В MigLayout есть замечательный режим отладки, который снимает все вопросы "почему так получилось". И для ручного кодирования он на голову удобнее GridBagLayout.

Спасибо за информацию поиграюсь с ним.

BlazkowiczНу, там из-за LayoutManager отступ какой-то нарисовался.

А что его там быть не должно?
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38992864
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannМне помогло sp.setResizeWeight(0.15d);

Это пропорции масштабирования раздельных частей при изменении размера контейнера для SpiltPane. Всё зависит от порядка. Если JFrame максимизировать после создания JSplitPane, то очевидно, что layout изменится.

Dr.HofmannА что его там быть не должно?
Ну, это же вы спросили как сделать чтобы его небыло.
Попробуйте задать разный фоновый цвет контейнерам и увидите кто именно раскомпоновался неправильно.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38992980
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЭто пропорции масштабирования раздельных частей при изменении размера контейнера для SpiltPane. Всё зависит от порядка. Если JFrame максимизировать после создания JSplitPane, то очевидно, что layout изменится.

Вообще, это не правильно?

BlazkowiczНу, это же вы спросили как сделать чтобы его небыло.
Попробуйте задать разный фоновый цвет контейнерам и увидите кто именно раскомпоновался неправильно.

Я понимаю, в моем случае его быть не должно.


Все разобрался просто удалил RightPane, и перенес JSplitPane на MainForm.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	public MainForm() throws HeadlessException {
		
		super("meta-nalog-365");
		lp = new LeftPane();
	
		upf = new UpForm();
		df = new DownForm();
		
		tp = new TopPanel();
		bp = new BottomPanel();
		
		spl = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upf, df);
		sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, lp, spl );
	
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993213
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,

Как тебе уже тут посоветовали - потрать день и изучи MigLayout.
Он реально заруливает все остальные вместе взятые.

+ Найди / купи книжку Портянкина про свинг и прочитай, на русском и все доходчиво.
Swing. Эффектные пользовательские интерфейсы
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993245
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDr.Hofmann,

Как тебе уже тут посоветовали - потрать день и изучи MigLayout.
Он реально заруливает все остальные вместе взятые.

+ Найди / купи книжку Портянкина про свинг и прочитай, на русском и все доходчиво.
Swing. Эффектные пользовательские интерфейсы

Ну хорошо, хорошо, такой момент еще остался. можете подтвердить или опровергнуть такие факты:

1. Что для JFrame лучше использовать JFrame.pack вместо setSize(800, 800) и почему?

2. В большинстве случаев нужно переопределять getPreferredSize вместо метода setPrederredSize для компонентов свинга, тот же вопрос для чего?
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993308
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann1. Что для JFrame лучше использовать JFrame.pack вместо setSize(800, 800) и почему?

Пофигу. Просто разные действия. pack() даст минимальный размер при котором всё нормально видно.

Dr.Hofmann2. В большинстве случаев нужно переопределять getPreferredSize вместо метода setPrederredSize для компонентов свинга, тот же вопрос для чего?
В большинстве случаев не нужно переопределять этот метод вообще.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993360
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDr.Hofmann,

Как тебе уже тут посоветовали - потрать день и изучи MigLayout.
Он реально заруливает все остальные вместе взятые.

+ Найди / купи книжку Портянкина про свинг и прочитай, на русском и все доходчиво.
Swing. Эффектные пользовательские интерфейсы

Кстати в этой книге пишется что нибудь про MigLayout?
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993373
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannКстати в этой книге пишется что нибудь про MigLayout?
Скорее всего нет. Книжка старая. Библиотека не официальная.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38993774
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannКстати в этой книге пишется что нибудь про MigLayout?
В книге дается (если я правильно помню) общее понимание как работают лейаут менеджеры, как бы их идеологию.
А сам миглейаут можно изучить по доке на сайте миглейаута.

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

Переписал на миглейаут - красота и ляпота в 5-10 раз меньше кода чем было.
...
Рейтинг: 0 / 0
использование JSplitPane в свинге и другие вопросы.
    #38994393
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, если что буду использовать java tutorials. Чета платить 600-800 мне не очень хочется. 2-e издание в pdf не нашел только первое на торентах. Если есть у кого скиньте ссылку пожалуйста.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / использование JSplitPane в свинге и другие вопросы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]