目次へ

解答例 - 実習課題3 - 3.イベント・ハンドラ

(実習課題3)

以下のサンプルプログラムを作成しなさい。

  • フレームに含まれるコンポーネントはラベル(JLabel)2つとメニュー。メニューには通常のメニューアイテム(JMenuItem)3つとラジオボタンメニューアイテム(JRadioButtonMenuItem)2つ。メニューのテキストおよび配置は任意。
  • ラジオボタンメニューは同時に1つしか選択できないようにする。
  • 1つのラベルにはメニューアイテムが選択されたときに対応するテキストを表示する。もう1つのラベルには選択されているラジオボタンメニューに対応するテキストを表示する事。
  • (ヒント)メニューアイテムには「java.awt.event.ActionListener」を使用する。
  • (ヒント)ラジオボタンメニューアイテムには「java.awt.event.ItemListener」を使用する。

解答例

package com.techscore.ui.chapter3.exercise3;

/**
 * SampleFrame.java
 * TECHSCORE Javaユーザインタフェース3章 実習課題3
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;

public class SampleFrame extends JFrame implements ActionListener, ItemListener {

    private JLabel label1;
    private JLabel label2;
    private JMenuItem redMenu;
    private JMenuItem yellowMenu;
    private JMenuItem greenMenu;
    private JRadioButtonMenuItem boyRadioButton;
    private JRadioButtonMenuItem girlRadioButton;

    public SampleFrame() {
        super("SampleFrame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        label1 = new JLabel("label");
        getContentPane().add(label1, BorderLayout.WEST);

        label2 = new JLabel("label2");
        getContentPane().add(label2, BorderLayout.EAST);

        //MenuBarの作成
        JMenuBar menuBar = new JMenuBar();
        super.setJMenuBar(menuBar);

        //Menuを作成
        JMenu fileMenu = new JMenu("Signal");
        menuBar.add(fileMenu);

        redMenu = new JMenuItem("red");
        fileMenu.add(redMenu);
        redMenu.addActionListener(this);

        yellowMenu = new JMenuItem("yellow");
        fileMenu.add(yellowMenu);
        yellowMenu.addActionListener(this);

        greenMenu = new JMenuItem("green");
        fileMenu.add(greenMenu);
        greenMenu.addActionListener(this);

        //Radioボタン用Menuの作成
        JMenu radioButtonMenu = new JMenu("Human");
        menuBar.add(radioButtonMenu);

        ButtonGroup group = new ButtonGroup();

        boyRadioButton = new JRadioButtonMenuItem("boy");
        group.add(boyRadioButton);
        radioButtonMenu.add(boyRadioButton);
        boyRadioButton.addItemListener(this);

        girlRadioButton = new JRadioButtonMenuItem("girl");
        group.add(girlRadioButton);
        radioButtonMenu.add(girlRadioButton);
        girlRadioButton.addItemListener(this);

        pack();
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == redMenu) {
            label1.setText("Stop!");
        } else if (event.getSource() == yellowMenu) {
            label1.setText("Caution!");
        } else if (event.getSource() == greenMenu) {
            label1.setText("Go!");
        }
    }

    public void itemStateChanged(ItemEvent item) {
        if (boyRadioButton.isSelected()) {
            label2.setText("Boy");
        } else if (girlRadioButton.isSelected()) {
            label2.setText("Girl");
        }
    }

    public static void main(String args[]) {
        new SampleFrame().setVisible(true);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp