解答例 - 実習課題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); } }