目次へ

解答例 - 実習課題4 - 6.コンテナ

(実習課題4)

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

  • ウィンドウの中央に「JSplitPane」、下にボタンを2つ配置する。
  • 「JSplitPane」は左右に分割し、それぞれの領域に色違いのボタンを配置する。テキスト・色は任意。
  • それぞれのボタンを押すと、該当する領域が大きくなるように中央線が動くようにする事。
  • またウィンドウの下部にあるボタンのテキストは「left」と「right」で、それぞれを押すと中央線が「左に」「右に」動くようにする事。

解答例

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

package com.techscore.ui.chapter6.exercise4;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class SplitPaneControlFrame extends JFrame implements ActionListener {

    private JButton leftPaneButton, rightPaneButton;
    private JButton leftButton, rightButton;
    private JSplitPane splitPane;

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

        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        splitPane.setPreferredSize(new Dimension(200, 100));
        getContentPane().add(splitPane);

        // 左のボタン
        leftPaneButton = new JButton("red");
        leftPaneButton.setBackground(Color.red);
        leftPaneButton.addActionListener(this);
        splitPane.setLeftComponent(leftPaneButton);

        // 右のボタン
        rightPaneButton = new JButton("blue");
        rightPaneButton.setBackground(Color.blue);
        rightPaneButton.addActionListener(this);
        splitPane.setRightComponent(rightPaneButton);

        // 下のボタン配置用パネル
        JPanel panel = new JPanel();
        getContentPane().add(panel, BorderLayout.SOUTH);
        leftButton = new JButton("left");
        rightButton = new JButton("right");
        leftButton.addActionListener(this);
        rightButton.addActionListener(this);
        panel.add(leftButton);
        panel.add(rightButton);

        pack();

        // ディバイダを中央に設定
        splitPane.setDividerLocation(
            (splitPane.getMinimumDividerLocation() + splitPane.getMaximumDividerLocation()) / 2);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == leftPaneButton || event.getSource() == rightButton) {
            splitPane.setDividerLocation(splitPane.getDividerLocation() + 1);
        } else if (event.getSource() == rightPaneButton || event.getSource() == leftButton) {
            splitPane.setDividerLocation(splitPane.getDividerLocation() - 1);
        }
    }

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp