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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расположение элементов на форме 
V
    Опции темы
sgrey
Дата 17.4.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



первый раз пишу gui на java, притом учу его сам (тобиш gui, не java). Возникают проблемы с расположением элементов на JFrame. Пока делаю просто форму с элементами, но как ни пытаюсь - всегда выходит криво (
Если раскомментировать setLayout(new FlowLayout()); в начале конструктора, то все кнопки и лэйблы и все остальное просто находятся вверху формы рядом друг с другом и никак их не подвинешь как надо. Пробовал GridLayout, но при нём получилось только кнопки вниз запихнуть, а текстфилд с лэйблом неверх, при этом в середну если и получалось что-то поставить, то оно растягивалось на всю форму. 
Сейчас удалил все layouts, и стал писать руками координаты всех элементов - опять криво.... то текстфилд на всю форму, то его вообще нет, то только кнопки, а то только одна надпись посередине формы "enter amount of bet"........ 
то что кучу всего импортировал - пока в процессе разработки, потом уберу то что не будет использовано )

вопрос такой  - подскажите как нормально расположить на форме лэйбл, кнопку, текстфилд......

Код


import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class GamePanel extends JFrame
{
    private JButton roll, exit;
    private JLabel bet, bankroll, amount;
    private JTextField betAmount;
    private JPanel buttonPanel, infoPanel, inputPanel;
    
    public GamePanel()
    {
        this(300, 300);
    }
    
    public GamePanel(int width, int height)
    {
     super("Craps game");    
        setLayout(new FlowLayout());
     super.setSize(width, height);
     super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     super.setResizable(false);
     super.setLocationRelativeTo(null);
     super.setVisible(true);

     bet = new JLabel("Enter amount of a bet:");
     bet.setAlignmentX(3);
     bet.setAlignmentY(5);
     bet.setLabelFor(betAmount);
        add(bet);
     betAmount = new JTextField(12);
     betAmount.setAlignmentX(50);
     betAmount.setAlignmentY(5);
     add(betAmount);
     //add(inputPanel,  BorderLayout.NORTH);
     
     bankroll = new JLabel("Current bankroll: ");
     amount = new JLabel("Amount won/lost: ");
        bankroll.setAlignmentX(3);
        bankroll.setAlignmentY(10);
        add(bankroll);
     
     ButtonHandler handler = new ButtonHandler();
     buttonPanel = new JPanel();
     buttonPanel.setLayout(new FlowLayout(1));
     roll = new JButton("Roll");
     buttonPanel.add(roll);
     exit = new JButton("Exit"); 
     exit.addActionListener(handler);
     buttonPanel.add(exit);
     add(buttonPanel, BorderLayout.SOUTH);
    }
    
    private class ButtonHandler implements ActionListener
    {
     public void actionPerformed(ActionEvent event)
     {
         if(event.getActionCommand() == "Exit")
         {
             System.exit(0);
         }
     }
    }
    
}

примерно выглядеть должно так: 
user posted image
PM MAIL   Вверх
Hidrag
Дата 17.4.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 25



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


--------------------
user posted image
PM WWW ICQ   Вверх
sgrey
Дата 18.4.2008, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



видимо придётся ставить NetBeans... но всё же хочется знать как это всё по-человечески пишется руками  smile 
PM MAIL   Вверх
sgrey
Дата 18.4.2008, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



поставил NetBeans.... не нравится он мне.... код там корявый, да и разбираться надо в этом интерфейсе... до сих пор не пойму какие имена он присваивает элементам и как к ним обращатся.... 
да и вообще я хочу научится писать сам интерфейс.... 

нашёл такое в интернете...
Код

Insets insets = pane.getInsets();
Dimension size = b1.getPreferredSize();
b1.setBounds(25 + insets.left, 5 + insets.top,
             size.width, size.height);


с чем едят Insets и какую разницу они делают в размещении на форме?

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

Код

    public GamePanel(int width, int height)
    {
     super("Craps game");    
        setLayout(null);
     super.setSize(width, height);
     super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     super.setResizable(false);
     super.setLocationRelativeTo(null);
     super.setVisible(true);
     
     bet = new JLabel("Enter amount of a bet:");
     bet.setLabelFor(betAmount);
     bet.setBounds(5, 10, 130, 20);
        add(bet);
     betAmount = new JTextField(12);
     betAmount.setBounds(140, 10, 100, 20);
     add(betAmount);


     
     bankroll = new JLabel("Current bankroll: ");
     amount = new JLabel("Amount won/lost: ");
        bankroll.setBounds(5, 30, 130, 20);
        add(bankroll);
        amount.setBounds(5, 50, 130, 20);
        add(amount);


     
     ButtonHandler handler = new ButtonHandler();


     roll = new JButton("Roll");
     Dimension sizeRoll = roll.getPreferredSize();
     roll.setBounds(80, 230, sizeRoll.width, sizeRoll.height);
     add(roll);
     exit = new JButton("Exit"); 
     Dimension sizeExit = exit.getPreferredSize();
     exit.setBounds(145, 230, sizeExit.width, sizeExit.height);
     exit.addActionListener(handler);
        add(exit);

    }


Это сообщение отредактировал(а) sgrey - 18.4.2008, 08:10
PM MAIL   Вверх
sgrey
Дата 21.4.2008, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вопрос решён. абсолютное позиционирование элементов на форме я выучил  smile 
всем спасибо за попытку помощи smile 
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.0682 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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