Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 2
Регистрация: 19.05.2013
Сообщений: 84

Расположение элементов на форме

28.05.2016, 09:05. Показов 2760. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код там две кнопки нужно сделать + она добавляет элементы в панель но не так как надо
А нужно сделать чтобы ид был тоненький а текст занимал до конца экрана место и при этом когда количество элементов выходит за предел панели появлялись полосы прокрутки

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import java.awt.BorderLayout;
import java.awt.Dialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
 
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
 
public class sc {
 
    public static int x = 20;
    public static int y = 0;
    public static int i = 1;
 
    public static void createGUI() {
 
        JFrame scenario = new JFrame("Описание сценария");
        scenario.setDefaultCloseOperation(scenario.EXIT_ON_CLOSE);
        scenario.setBounds(200, 200, 500, 500);
        scenario.setLayout(new GridLayout(2, 1));
        JPanel p1 = new JPanel();
        p1.setLayout(null);
        scenario.add(p1);
        final JPanel p2 = new JPanel();
        final JScrollPane p3 = new JScrollPane(p2);
        p2.setLayout(new GridLayout(0, 2));
        scenario.add(p3);
        JButton choose = new JButton("Выберите файл");
        choose.setBounds(10, 10, 130, 30);
        p1.add(choose);
        JButton plus = new JButton("+");
        plus.setBounds(150, 10, 45, 30);
        p1.add(plus);
        JComboBox cmbact = new JComboBox();
        cmbact.setBounds(50, 100, 100, 30);
        p1.add(cmbact);
        JComboBox cmbuse = new JComboBox();
        cmbuse.setBounds(200, 100, 100, 30);
        p1.add(cmbuse);
        scenario.repaint();
        scenario.setVisible(true);
 
        choose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JFileChooser chooser = new JFileChooser();
                chooser.setFileFilter(new ExtFileFilter());
                chooser.showOpenDialog(null);
                File f = chooser.getSelectedFile();
                String filename = f.getAbsolutePath();
                Files files = new Files();
                ArrayList<String> ucase = files.parseuse(filename);
                ArrayList<String> act = files.parseact(filename);
                System.out.println("Actor - " + act);
                System.out.println("UseCase - " + ucase);
                for (int i = 0; i < act.size(); i++) {
                    cmbact.addItem(act.get(i));
                }
                for (int i = 0; i < ucase.size(); i++) {
                    cmbuse.addItem(ucase.get(i));
                }
            }
        });
        plus.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int number = p2.getComponentCount() + 1;
                JLabel id = new JLabel("" + i);
                JTextArea text = new JTextArea("text" + number);
                JScrollPane pane = new JScrollPane(text);
                id.setLocation(x - 20, y);
                id.setSize(20, 20);
                pane.setSize(450, 110);
                pane.setLocation(x, y);
                text.setText(null);
                text.setLineWrap(true);
                p2.add(id);
                p2.add(pane);
                System.out.println(x + "-" + y);
                System.out.println(i);
                y = y + 120;
                i++;
                p3.repaint();
                p3.revalidate();
            }
        });
    }
 
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createGUI();
            }
        });
    }
}
Добавлено через 1 минуту
Подскажите по поводу размещения и полос прокрутки
если добавить 9+ элементов становится все нормально

Добавлено через 14 часов 31 минуту
Подскажите по поводу размещения и полос прокрутки
если добавить 9+ элементов становится все нормально

Почему никто не пишет ничего
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2016, 09:05
Ответы с готовыми решениями:

Расположение нескольких элементов интерфейса на форме
Добрый вечер. Пытаюсь написать плагин для Intellij Idea. Столкнулся со следующей проблемой: при попытке расположить на форме кнопку, кнопка...

Как задать координатно расположение кнопки на форме?
сабж... Вот код какой есть, нужно что бы в 15:15 находился левый угол будущей кнопки, размеры 10х10. /* * To change this...

Расположение элементов на форме
Добрый день, помогите расположить элементы списка &lt;Grid&gt; &lt;ItemsControl ItemsSource=&quot;{Binding Source={StaticResource...

2
63 / 63 / 58
Регистрация: 19.01.2016
Сообщений: 152
28.05.2016, 23:30
Вот так работает почти нормально.

Глобальная переменная:
Java
1
static Dimension DIMENSION;
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
private static void createGUI() {
        JFrame scenario = new JFrame("Описание сценария");
        JPanel contentPane = new JPanel(new BorderLayout());
        scenario.setContentPane(contentPane);
        DIMENSION = new Dimension(0, 0);
        scenario.setDefaultCloseOperation(scenario.EXIT_ON_CLOSE);
        scenario.setBounds(200, 200, 500, 500);
        scenario.setLayout(new GridLayout(2, 1));
        JPanel p1 = new JPanel();
        p1.setLayout(null);
        contentPane.add(p1, BorderLayout.PAGE_START);
        JPanel p2 = new JPanel();
        final JScrollPane scroller = new JScrollPane(p2);
        scroller.setPreferredSize(new Dimension(500, 250));
        p2.setLayout(new GridLayout(0, 2));
        contentPane.add(scroller, BorderLayout.CENTER);
        JButton choose = new JButton("Выберите файл");
        choose.setBounds(10, 10, 130, 30);
        p1.add(choose);
        JButton plus = new JButton("+");
        plus.setBounds(150, 10, 45, 30);
        p1.add(plus);
        JComboBox cmbact = new JComboBox();
        cmbact.setBounds(50, 100, 100, 30);
        p1.add(cmbact);
        JComboBox cmbuse = new JComboBox();
        cmbuse.setBounds(200, 100, 100, 30);
        p1.add(cmbuse);
        scenario.repaint();
        scenario.setVisible(true);
         plus.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int number = p2.getComponentCount() + 1;
                JLabel id = new JLabel("" + i);
                JTextArea text = new JTextArea("text" + number);
                JScrollPane pane = new JScrollPane(text);
                id.setLocation(x - 20, y);
                id.setSize(20, 20);
                pane.setSize(450, 110);
                pane.setLocation(x, y);
                text.setText(null);
                text.setLineWrap(true);
                
                Rectangle rect = new Rectangle(x, y, 500, 20);
                p2.scrollRectToVisible(rect);
                int this_height = y + 20;
                if(this_height > DIMENSION.height){
                    DIMENSION.height = this_height;
                }
                p2.setPreferredSize(DIMENSION);
                
                p2.add(id);
                p2.add(pane);
                System.out.println(x + "-" + y);
                System.out.println(i);
                y = y + 120;
                i++;
                p2.repaint();
                p2.revalidate();
            }
        });
    }
1
3 / 3 / 2
Регистрация: 19.05.2013
Сообщений: 84
30.05.2016, 18:11  [ТС]
а можно скрин выполнения
я дошел уже к такому же виду но мне необходимо чтобы цифра занимала меньше места а текст больше
в соотношении 5% и 95%
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2016, 18:11
Помогаю со студенческими работами здесь

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

Расположение большого числа элементов на форме
Я пишу почтовый клиент и мне нужно каким то образом отобразить множество входящих писем. Пробовал использовать QHBoxLayout но когда...

Расположение элементов на форме, как увеличить поля окна
Всем привет. Мой первый вопрос по WPF. Накидал интерфейс - не устаривают слишком большие поля по краям (изображение слева). Привожу...

Свойсто которое отвечает за одинковое расположение элементов на форме
Привет, подскажите как сделать так что бы элементы были одинаково расположены на разных экранах, то есть если программа маленького размера...

Расположение компонентов на форме
Всем доброго времени суток. Можно ли используя различные свойства визуальных компонентов(Align к примеру) Расположить компоненты так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru