解答例 - 実習課題4 - 4.レイアウト・マネージャー
(実習課題4)
以下のプログラムを作成しなさい。
- ウィンドウに含まれるコンポーネントは3つのボタン(JButton)。ラベルの背景、テキストは任意。
- レイアウト・マネージャーは「CardLayout」。3つのボタンは別々のカードに配置する事。
- ウィンドウにはメニューがあり、メニューの構成とそれを選択した場合の動作は以下のとおり。
- first : 先頭のカードを表示する
- next : 現在表示している次のカードを表示する
- previous : 現在表示している1つ前のカードを表示する
- last : 最後のカードを表示する
- メニューの配置については任意。
解答例
package com.techscore.ui.chapter4.exercise4; /** * CardLayoutFrame.java * TECHSCORE Javaユーザインタフェース4章 実習課題4 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ import java.awt.CardLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class CardLayoutFrame extends JFrame implements ActionListener { private CardLayout layout; private JMenuItem firstMenu; private JMenuItem nextMenu; private JMenuItem previousMenu; private JMenuItem lastMenu; public CardLayoutFrame() { super("CardLayoutFrame"); setDefaultCloseOperation(EXIT_ON_CLOSE); //カードレイアウトを作成。 layout = new CardLayout(); getContentPane().setLayout(layout); //ボタンを3つ,レイアウトに配置する JButton blue = new JButton("1"); blue.setBackground(Color.blue); getContentPane().add(blue, "first"); JButton yellow = new JButton("2"); yellow.setBackground(Color.yellow); getContentPane().add(yellow, "second"); JButton red = new JButton("3"); red.setBackground(Color.red); getContentPane().add(red, "third"); //メニューを作成 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fileMenu = new JMenu("Select Card"); menuBar.add(fileMenu); firstMenu = new JMenuItem("first"); fileMenu.add(firstMenu); firstMenu.addActionListener(this); nextMenu = new JMenuItem("next"); fileMenu.add(nextMenu); nextMenu.addActionListener(this); previousMenu = new JMenuItem("previous"); fileMenu.add(previousMenu); previousMenu.addActionListener(this); lastMenu = new JMenuItem("last"); fileMenu.add(lastMenu); lastMenu.addActionListener(this); pack(); } public void actionPerformed(ActionEvent event) { if (event.getSource() == firstMenu) { layout.first(getContentPane()); } else if (event.getSource() == nextMenu) { layout.next(getContentPane()); } else if (event.getSource() == previousMenu) { layout.previous(getContentPane()); } else if (event.getSource() == lastMenu) { layout.last(getContentPane()); } } public static void main(String args[]) { new CardLayoutFrame().setVisible(true); } }