Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/78: Рейтинг темы: голосов - 78, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 12.01.2009
Сообщений: 30

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

16.03.2012, 17:53. Показов 16183. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток,

Подскажите пожалуйста, как указать расположение элементов внутри JFrame. Метод setLocation() почему то не работает. Помогите найти причину. Кнопка всегда вверху посредине появляется, независимо от того, что я посылаю в setLocation(). Спасибо за помощь.

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
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class EventDemo {
    
    JButton jbtn1;
    
    EventDemo(){
        JFrame jframe = new JFrame("Excel Results Assembler");
        jframe.setLayout(new FlowLayout());
        jframe.setSize(300, 200);
        jframe.setResizable(false);
        jframe.setLocationRelativeTo(null);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        jbtn1 = new JButton("Open");
                
                //НЕ РАБОТАЕТ!!!
                jbtn1.setLocation(50, 50);
        
        jframe.add(jbtn1);
        jframe.setVisible(true);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            
            @Override
            public void run() {
                new EventDemo();
                
            }
        });
    }
 
}
Добавлено через 18 минут
Java
1
jbtn1.setSize(50, 50);
Сразу после setLocation() тоже не влияет на размер кнопки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2012, 17:53
Ответы с готовыми решениями:

Как сделать Jframe внутри другого JFrame
Доброго времени суток джентльмены и леди. Как сделать так, что бы внутри главного JFrame запустить несколько других...

Проходил ли кто-то видео-курс techpro? Как у них получилось JFrame в JFrame добавить
Проходил ли кто-то видео-курс techpro? Как у них получилось JFrame в JFrame добавить? http://teachpro.ru/Course/JavaforBeginners...

Как закрыть один JFrame и открыть новый JFrame?
привет подскажите как реализовать. есть отдельный класс с выпадающим меню(там три пункта). есть отдельный класс который рисует фрейм,...

5
 Аватар для RequiemMass
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
18.03.2012, 01:33
ну в общем надо отключить менеджер раскладки. setLayout(null); , если не ошибаюсь. А для позиционаирования по абсолютным координатам используйте метод setBounds();
0
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 8
19.09.2018, 16:44
Тоже озадачился расположением элементов внутри JFrame и столкнулся с проблемой.
Метод mainWindow.getContentPane().add() всегда выводит только последний элемент на экран. В моем случае - это panel1.
Подскажите почему именно так? Знаю что сама реализация неправильная (я только приступил к изучению UI). Подробной инфы гугл не дал по этому поводу..
В какую сторону копать если мне нужно иметь несколько рабочих областей в одном JFram'e?

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
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;  
import javax.swing.*;
public class CreditCalcUI 
{
    private static String money="Сумма кредита";
    private static String payment="Ежемесячный платёж";
    private static String interestRate="Среднегодовая процентная ставка";
    private static String loanTerm="Срок кредита";
    private static JLabel labelMoney= null;
    private static JLabel labelPayment=null;
    private static JLabel labelInterestRate=null;
    private static JLabel labelLoanTerm= null;
    
    
    
     public static void run() 
     {
            //Создадим окно и установим заголовок
            final JFrame mainWindow = new JFrame("Программа для расчета кредита");
            
            //Укажем размеры окна 
            mainWindow.setBounds(150,150,450, 300);
             
            
            //Подключаем иконку из корня папки проекта
            ImageIcon img = new ImageIcon("image.png");
            mainWindow.setIconImage(img.getImage());
            
            //Событие "закрыть" при нажатии по крестику окна. По умолчанию программа не завершает свою работу если просто закрыть ее окно.
            mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          
            //Текстовое поля
                    
            JTextField textField0= new JTextField();
            JTextField textField1= new JTextField();
            JTextField textField2= new JTextField();
            JTextField textField3= new JTextField();            
            
            
            
            //Надписи
            labelMoney = new JLabel(String.format(money)); 
            labelPayment = new JLabel(String.format(payment));
            labelInterestRate= new JLabel(String.format(interestRate));
            labelLoanTerm=new JLabel(String.format(loanTerm));
            
            //Создадим панель
            JPanel panel0 = new JPanel();
            JPanel panel1 = new JPanel();
 
            //Создадим кнопки
            JButton calcButton = new JButton("Расчитать");
            
            //Событие для кнопки "Расчитать". Тут необходимо прикрутить выполнение класса CreditCalc
            calcButton.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   //Действие
                    textField0.setText("Hello World!"); //Временно выводим текст в текстовом поле                                        
                }
            });
          
            //Добавим кнопки и поля на панель
            panel0.setLayout(new GridLayout(4,2,3,5));  //Задал менеджер размещения в виде таблицы. Необходимо указать количество строк, столбцов и расстояние между ячейками по горизонтали и по вертикали.
            panel0.add(labelMoney);
            panel0.add(textField0);
            panel0.add(labelLoanTerm);
            panel0.add(textField1);
            panel0.add(labelInterestRate);
            panel0.add(textField2);
            panel0.add(labelPayment);
            panel0.add(textField3);
            panel1.add(calcButton);
                        
            mainWindow.getContentPane().add(panel0);
            mainWindow.getContentPane().add(panel1);
                    
            //Разместим окно программы по центру
            mainWindow.setLocationRelativeTo(null);
            mainWindow.setVisible(true);
     }
     
     //После того как мы описали все элементы окна прописываем главный метод (main) в котором запускаем окно программы
      public static void main(String[] args) 
     {
         run();
     }
}
0
 Аватар для snajper_ro
116 / 101 / 52
Регистрация: 14.09.2011
Сообщений: 696
Записей в блоге: 1
19.09.2018, 17:08
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
import java.io.*;
 
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;
public class CreditCalcUI
{
    private static String money="Сумма кредита";
    private static String payment="Ежемесячный платёж";
    private static String interestRate="Среднегодовая процентная ставка";
    private static String loanTerm="Срок кредита";
    private static JLabel labelMoney= null;
    private static JLabel labelPayment=null;
    private static JLabel labelInterestRate=null;
    private static JLabel labelLoanTerm= null;
 
 
 
    public static void run()
    {
        //Создадим окно и установим заголовок
        final JFrame mainWindow = new JFrame("Программа для расчета кредита");
 
        //Укажем размеры окна
        mainWindow.setBounds(150,150,450, 300);
 
 
        //Подключаем иконку из корня папки проекта
        ImageIcon img = new ImageIcon("image.png");
        mainWindow.setIconImage(img.getImage());
 
        //Событие "закрыть" при нажатии по крестику окна. По умолчанию программа не завершает свою работу если просто закрыть ее окно.
        mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        //Текстовое поля
 
        JTextField textField0= new JTextField();
        JTextField textField1= new JTextField();
        JTextField textField2= new JTextField();
        JTextField textField3= new JTextField();
 
 
 
        //Надписи
        labelMoney = new JLabel(String.format(money));
        labelPayment = new JLabel(String.format(payment));
        labelInterestRate= new JLabel(String.format(interestRate));
        labelLoanTerm=new JLabel(String.format(loanTerm));
 
        //Создадим панель
        JPanel panel0 = new JPanel();
        JPanel panel1 = new JPanel();
 
        //Создадим кнопки
        JButton calcButton = new JButton("Расчитать");
 
        //Событие для кнопки "Расчитать". Тут необходимо прикрутить выполнение класса CreditCalc
        calcButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //Действие
                textField0.setText("Hello World!"); //Временно выводим текст в текстовом поле
            }
        });
 
        //Добавим кнопки и поля на панель
        panel0.setLayout(new GridLayout(4,2,3,5));  //Задал менеджер размещения в виде таблицы. Необходимо указать количество строк, столбцов и расстояние между ячейками по горизонтали и по вертикали.
        panel0.add(labelMoney);
        panel0.add(textField0);
        panel0.add(labelLoanTerm);
        panel0.add(textField1);
        panel0.add(labelInterestRate);
        panel0.add(textField2);
        panel0.add(labelPayment);
        panel0.add(textField3);
        panel1.add(calcButton);
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add(panel0, BorderLayout.CENTER);
        panel.add(panel1, BorderLayout.NORTH);
        mainWindow.add(panel);
        //Разместим окно программы по центру
        mainWindow.setLocationRelativeTo(null);
        mainWindow.setVisible(true);
    }
 
    //После того как мы описали все элементы окна прописываем главный метод (main) в котором запускаем окно программы
    public static void main(String[] args)
    {
        run();
    }
}
изучайте компоновку элементов
1
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 8
19.09.2018, 17:15
Спасибо! Все просто! Оказывается надо вложить обе панели одну общую)
0
 Аватар для snajper_ro
116 / 101 / 52
Регистрация: 14.09.2011
Сообщений: 696
Записей в блоге: 1
19.09.2018, 17:20
вот вам на будущее короткие инструкции https://www.cyberforum.ru/blog... g5467.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.09.2018, 17:20
Помогаю со студенческими работами здесь

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

JFrame: рендеринг элементов графики на форме
Прошу помощи, не могу разобраться как в таком фрейме как я сделал, еще дополнительно отрендерить компонент графики, хотя бы квадрат...

Создание массива JLabel с выводом на JFrame всех элементов
Не могу добиться вывода всех элементов массива на панель, выводиться только последний package mytest; import...

Перемещение элементов формы в центр при разворачивании JFrame на полный экран
При увеличении JFrame в полный экран, компоненты на JFrame перемещаются в угол, нужно чтобы были в центре. Помогите, пожалуйста!

Расположение элементов на форме
Есть код там две кнопки нужно сделать + она добавляет элементы в панель но не так как надо А нужно сделать чтобы ид был тоненький а текст...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru