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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dialog 
V
    Опции темы
sol78
Дата 28.9.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите разобраться, как это делают?
Я имею введу такая групперовка, как например Windows Settings?

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  untitled.rar 12,19 Kb
PM MAIL   Вверх
RebornCrusader
Дата 29.9.2007, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Для логического связывания кнопок - javax.swing.ButtonGroup. А при размещении просто кладут на панель, у которой устанавливают какой-нибудь border.
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
sol78
Дата 29.9.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а можно примерчик, что то не очень понятно? smile 
PM MAIL   Вверх
RebornCrusader
  Дата 29.9.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Немного аляповато, но принцип демонстрирует:
Код
      
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = frame.getContentPane();

        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBorder(new TitledBorder("Select something"));
        contentPane.add(panel);
        JRadioButton oneRB = new JRadioButton("One");
        JRadioButton twoRB = new JRadioButton("Two");
        JRadioButton threeRB = new JRadioButton("Three");

        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(oneRB);
        buttonGroup.add(twoRB);
        buttonGroup.add(threeRB);
        panel.add(oneRB);
        panel.add(twoRB);
        panel.add(threeRB);

        frame.pack();
        frame.setVisible(true);

В группу можно класть любые кнопки. Но смысл имеет только для Radio и Toggle. Кстати, в джавадоке есть ссылка официальный туториал!

Если под группировкой подразумеваются табы, то тут не обойтись без JTabbedPane. И вообще я бы посоветовал не обойтись без книжки Портянкина про Swing. Хотя бы в электронном виде.
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
dorogoyIV
Дата 29.9.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



ну вот ну очень простой пример:
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

class Example extends JFrame
{
 Example()
 {
  setBounds(100,100,400,300);
  setLayout(new FlowLayout());

  JPanel windowsettings=new JPanel(new GridLayout(3,2));
  windowsettings.setBorder(new TitledBorder(" 321 "));

  JCheckBox scroll=new JCheckBox("Vertical scroll bar");
  JCheckBox rec=new JCheckBox("Automatic window recyclyng");
  JCheckBox dnd=new JCheckBox("Drag-n-drop text editing");
  JCheckBox horizontal=new JCheckBox("Horizontal scroll bar");
  JCheckBox margin=new JCheckBox("Selection margin");
  windowsettings.add(scroll);
  windowsettings.add(rec);
  windowsettings.add(dnd);
  windowsettings.add(horizontal);
  windowsettings.add(margin);
  add(windowsettings);
/*
  ButtonGroup bg=new ButtonGroup();
  bg.add(scroll);
  bg.add(rec);
  bg.add(dnd);
  bg.add(horizontal);
  bg.add(margin);
*/
 }

 public static void main(String[]args)
 {
  JFrame f=new Example();
  f.setVisible(true);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}


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


Шустрый
*


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

Репутация: 3
Всего: 6



Цитата(dorogoyIV @  29.9.2007,  20:22 Найти цитируемый пост)
 
Код

CheckBox scroll=new JCheckBox("Vertical scroll bar");  
...
ButtonGroup bg=new ButtonGroup();
bg.add(scroll);

Кхм... а вам никто не говорил, что чекбоксы выражают понятие вкл/вкл? И что использовать их для переключения, при наличии традиционных, предназначенных для этого радиокнопок, несколько аморально? smile


Это сообщение отредактировал(а) RebornCrusader - 29.9.2007, 12:32
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
dorogoyIV
Дата 29.9.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(RebornCrusader @  29.9.2007,  12:32 Найти цитируемый пост)
Кхм... а вам никто не говорил, что чекбоксы выражают понятие вкл/вкл? И что использовать их для переключения, при наличии традиционных, предназначенных для этого радиокнопок, несколько аморально? 

я наверное что то не понял - я вам нарисовал фрейм по вашему рисунку!!! а вы чего хотели то??? объясните тогда поподробнее...
PM MAIL   Вверх
dorogoyIV
Дата 29.9.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(RebornCrusader @  29.9.2007,  12:32 Найти цитируемый пост)
Кхм... а вам никто не говорил, что чекбоксы выражают понятие вкл/вкл?

RebornCrusader, так  это же для примера...  smile 

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


Опытный
**


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

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



не понимаю назначения этой группировки...
Код

package tmp;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;

public class test extends JFrame{
    private JSpinner spin;
    private JRadioButton sec;
    private JRadioButton msec;
    private JRadioButton nsec;
    private JRadioButton micsec;
    
    public test() {

           setBounds(80,80,200,150)

  JPanel PoolingPanel=new JPanel(new BorderLayout());
  
  JPanel SpinnerPanel =new JPanel();
  spin=new JSpinner();
  SpinnerPanel.add(spin);
  
  JPanel RadioPanel=new JPanel(new GridLayout(2,2));
  ButtonGroup bg=new ButtonGroup();
  bg.add(sec);
  bg.add(msec);
  bg.add(micsec);
  bg.add(nsec);

  sec=new JRadioButton("Sec");
  msec=new JRadioButton("mSec");
  micsec=new JRadioButton("micSec");
  nsec=new JRadioButton("nSec");
  RadioPanel.add(sec);
  RadioPanel.add(msec);
  RadioPanel.add(micsec);
  RadioPanel.add(nsec);
  PoolingPanel.setBorder(new TitledBorder(" Pooling "));
  PoolingPanel.add(SpinnerPanel, BorderLayout.NORTH);
  PoolingPanel.add(RadioPanel, BorderLayout.CENTER);
  add(PoolingPanel);

    }
}


что с ней что без нее ...???
а если мне надо сделать так для RadioButton отмечая одно отменялось на другом????
PM MAIL   Вверх
sol78
Дата 29.9.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все работает, я ошиблась в коде
Код

package tmp;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;

public class test extends JFrame{
    private JSpinner spin;
    private JRadioButton sec;
    private JRadioButton msec;
    private JRadioButton nsec;
    private JRadioButton micsec;
    
    public test() {

           setBounds(80,80,200,150)

  JPanel PoolingPanel=new JPanel(new BorderLayout());
  
  JPanel SpinnerPanel =new JPanel();
  spin=new JSpinner();
  SpinnerPanel.add(spin);
  
  JPanel RadioPanel=new JPanel(new GridLayout(2,2));
  ButtonGroup bg=new ButtonGroup();


  sec=new JRadioButton("Sec");
  msec=new JRadioButton("mSec");
  micsec=new JRadioButton("micSec");
  nsec=new JRadioButton("nSec");
  RadioPanel.add(sec);
  RadioPanel.add(msec);
  RadioPanel.add(micsec);
  RadioPanel.add(nsec);

  bg.add(sec);
  bg.add(msec);
  bg.add(micsec);
  bg.add(nsec);

  PoolingPanel.setBorder(new TitledBorder(" Pooling "));
  PoolingPanel.add(SpinnerPanel, BorderLayout.NORTH);
  PoolingPanel.add(RadioPanel, BorderLayout.CENTER);
  add(PoolingPanel);

    }
}

группировка и обеспечивает то что не могут бить одновременно вибрани 2 кнопки

PM MAIL   Вверх
RebornCrusader
Дата 30.9.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Цитата(sol78 @  30.9.2007,  05:56 Найти цитируемый пост)
группировка и обеспечивает то что не могут бить одновременно вибрани 2 кнопки

На самом деле, не только. Если сделать вот так:
Код

sec=new JRadioButton("Sec");
sec.setActionCommand("Sec");

msec=new JRadioButton("mSec");
msec.setActionCommand("mSec");

micsec=new JRadioButton("micSec");
micsec.setActionCommand("micSec");

nsec=new JRadioButton("nSec");
nsec.setActionCommand("nSec");


А потом, по какому-то событию, вот так:
Код

ButtonModel selection = buttonGroup.getSelection();
if (selection != null) {
  System.out.println(selection.getActionCommand());
}

То можно автоматом получать название нажатой (выбранной) кнопки, не перебирая все на предмет нажатости. В твоём случае, видимо, для имени можно использовать строку, содержащую число (множитель - степень десятки), а потом эту строку парсить в целое число и получать готовый коэффициент.

P. S. В Java принято писать имена классов с большой буквы, а переменных с маленькой. Вне зависимости от личной приязни к ним smile

 smile 
Цитата(dorogoyIV @  29.9.2007,  21:04 Найти цитируемый пост)
RebornCrusader, так  это же для примера...   

smile 
Не хочу показаться флудером, но учить плохому не надо. Лично мне очень неприятно, когда какая-то программа ведёт себя неожиданным образом - компоненты в ней испольуются не по назначению. Путать радиокнопки и чекбоксы - классика жанра. Или делать текстовые метки в виде кнопок - это "красиво" (и прекрасно запутывает юзера). Не надо пытаться обеспечить юзеру ситуацию, в которой он чувствует себя полным балбесом, поскольку не понимает, как пользоваться программой.

Это сообщение отредактировал(а) RebornCrusader - 30.9.2007, 00:27
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
dorogoyIV
Дата 30.9.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(RebornCrusader @  30.9.2007,  00:24 Найти цитируемый пост)
Не хочу показаться флудером, но учить плохому не надо.
 ...

соглашусь с вами. действительно - чекбоксы и радио из одной банды, вот их и путаем постоянно.  smile 
вот потому я и закомментировал в своем примере группу.
PM MAIL   Вверх
SkIv1989
Дата 9.7.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а как сделать вот такую группировку, чтобы там были не только кнопки?
----имя группы-----------------------------
|  тут много всяких жлэйблов и         |
|  текстовых полей а также кнопок  |
|                                                          |
|_____________________________|
если делать как предложил RebornCrusader, то я так понимаю просто будет рамка без имени группы
PM MAIL   Вверх
RebornCrusader
Дата 10.7.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 6



Цитата(SkIv1989 @  10.7.2009,  02:58 Найти цитируемый пост)
если делать как предложил RebornCrusader, то я так понимаю просто будет рамка без имени группы 

Почему же? На любую панель можно навесить бордер, и здесь он как раз с заголовком:
Код

panel.setBorder(new TitledBorder("Select something"));


P. S. Обрати внимание на дату последнего поста smile
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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