解答例 - 実習課題3 - 7.コンテナ2
(実習課題3)
実習課題2のプログラムに「JToolBar」を追加しなさい。
- 「JToolBar」に追加されるコンポーネントはボタン3つ。それぞれ「JTabbedPane」のタブ3つに対応する。
- ボタンのテキストとタブの名前は同じにする事。
- ボタンが押されると、該当するタブが前面に表示されるようにする事。
解答例
/**
* ToolBarFrame.java
* TECHSCORE Javaユーザインタフェース7章 実習課題3
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.ui.chapter7.exercise3;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class ToolBarFrame extends JFrame implements ChangeListener, ActionListener {
private JTabbedPane tabbedPane;
private JButton labelButton, buttonButton, radioButton;
public ToolBarFrame() {
super("ToolBarFrame");
setDefaultCloseOperation(EXIT_ON_CLOSE);
tabbedPane = new JTabbedPane();
tabbedPane.addChangeListener(this);
getContentPane().add(tabbedPane);
tabbedPane.add("label", new JLabel("label"));
tabbedPane.add("button", new JButton("button"));
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1));
tabbedPane.add("radio", panel);
ButtonGroup bg = new ButtonGroup();
JRadioButton radio1 = new JRadioButton("radio button 1");
JRadioButton radio2 = new JRadioButton("radio button 2");
JRadioButton radio3 = new JRadioButton("radio button 3");
radio1.setSelected(true);
bg.add(radio1);
bg.add(radio2);
bg.add(radio3);
panel.add(radio1);
panel.add(radio2);
panel.add(radio3);
JToolBar toolBar = new JToolBar();
getContentPane().add(toolBar, BorderLayout.NORTH);
labelButton = new JButton("label");
buttonButton = new JButton("button");
radioButton = new JButton("radio");
labelButton.addActionListener(this);
buttonButton.addActionListener(this);
radioButton.addActionListener(this);
toolBar.add(labelButton);
toolBar.add(buttonButton);
toolBar.add(radioButton);
pack();
}
public void stateChanged(ChangeEvent event) {
setTitle(tabbedPane.getTitleAt(tabbedPane.getSelectedIndex()));
}
public void actionPerformed(ActionEvent event) {
if (event.getSource().equals(labelButton)) {
tabbedPane.setSelectedIndex(tabbedPane.indexOfTab("label"));
} else if (event.getSource().equals(buttonButton)) {
tabbedPane.setSelectedIndex(tabbedPane.indexOfTab("button"));
} else if (event.getSource().equals(radioButton)) {
tabbedPane.setSelectedIndex(tabbedPane.indexOfTab("radio"));
}
}
public static void main(String args[]) {
new ToolBarFrame().setVisible(true);
}
}

