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

