добавление ButtonGroup в объект Box-layout - PullRequest
2 голосов
/ 02 декабря 2011

Когда я пытаюсь поместить объект ButtonGroup в мой объект Box, компилятор возвращает следующую ошибку:

нет метода для такого типа

Пожалуйста,помогите мне, как я могу добавить мой ButtonGroup в горизонтальную рамку?

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Примерно так:

ButtonGroup bg; // your button group
Box box; // your box
// Create a panel to group the buttons.
JPanel panel = new JPanel();
// Add all of the buttons in the group to the panel.
for (Enumeration<AbstractButton> en = buttonGroup.getElements(); en.hasMoreElements();) {
    AbstractButton b = en.nextElement();
    panel.add(b);
}
// Add the panel to the box.
box.add(panel):
1 голос
/ 02 декабря 2011

ButtonGroup расширяет объект; это не компонент. Таким образом, он явно не добавляется в контейнер или компонент. Скорее, он группирует экземпляры AbstractButton.

Вот пример кода из документации Java.

Одним из преимуществ того, что ButtonGroup не является Компонентом (и, вероятно, причиной такой реализации), является то, что экземпляры AbstractButton на разных Компонентах могут быть членами одной и той же ButtonGroup.
Вот пример кода для его демонстрации с использованием BoxLayout.

JPanel mainPanel = new JPanel();
mainPanel.setLayout ( new BoxLayout( mainPanel, BoxLayout.PAGE_AXIS ) );

ButtonGroup group = new ButtonGroup( );

JButton dogButton = new JButton("dog");
group.add( dogButton );
JPanel dogPanel = new JPanel( );
dogPanel.add( dogButton );
mainPanel.add( dogPanel );

JButton catButton = new JButton("cat");
group.add( catButton );
JPanel catPanel = new JPanel();
catPanel.add( catButton );
mainPanel.add( catPanel );
...