ButtonGroup
オブジェクトをオブジェクトに配置しようとするとBox
、コンパイラは次のエラーを返します。
そのようなタイプのメソッドはありません
助けてください、どうすればButtonGroup
水平ボックスに追加できますか?
ButtonGroup
オブジェクトをオブジェクトに配置しようとするとBox
、コンパイラは次のエラーを返します。
そのようなタイプのメソッドはありません
助けてください、どうすればButtonGroup
水平ボックスに追加できますか?
このようなもの:
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):
ButtonGroup は Object を拡張します。コンポーネントではありません。そのため、コンテナまたはコンポーネントに明示的に追加されません。むしろ、AbstractButton インスタンスをグループ化します。
Java ドキュメントのサンプル コードを次に示します。
ButtonGroup をコンポーネントにしないことの 1 つの利点 (そしておそらくこのように実装する理由) は、異なるコンポーネントの 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 );