目次へ

解答例 - 実習課題1 - 10.テキスト・コンポーネント

(実習課題1)

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

  • 社員名を管理するプログラムを作成する。
  • ウィンドウに含まれるコンポーネント、およびその働きは以下の通り。
    • 新たに社員名を追加するためのテキストフィールドと「追加」ボタン
    • 社員名を表示するためのリスト
    • リストで選択した社員を削除するための「削除」ボタン
  • 「追加」ボタンが押されるとテキストフィールドに入力されている内容がリストに追加される。何も入力されていない場合は追加しない。

解答例

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

package com.techscore.ui.chapter10.exercise1;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class JTextFieldFrame extends JFrame implements ActionListener {

    private JTextField textfield;
    private JButton deleteButton;
    private JButton addButton;
    private DefaultListModel model = new DefaultListModel();
    private JList list;

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

        JLabel input = new JLabel("リストに追加したい社員名を入力して下さい");
        JLabel delete = new JLabel("削除したい社員データを以下のリストより選択し、削除ボタンを押して下さい");

        //テキストフィールドを作成
        textfield = new JTextField(30);
        textfield.setEditable(true);

        //リストを作成
        JScrollPane scrollPane = new JScrollPane();
        list = new JList(model);
        scrollPane.getViewport().add(list);

        //追加ボタンを作成
        addButton = new JButton("追加");
        addButton.addActionListener(this);

        //削除ボタンを作成
        deleteButton = new JButton("削除");
        deleteButton.addActionListener(this);

        //フィールド,リスト、ボタンを配置
        GridBagLayout layout = new GridBagLayout();
        JPanel panel = new JPanel(layout);
        getContentPane().add(panel, BorderLayout.CENTER);

        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 4;
        c.fill = GridBagConstraints.HORIZONTAL;
        layout.setConstraints(input, c);
        panel.add(input);

        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 3;
        layout.setConstraints(textfield, c);
        panel.add(textfield);

        c.gridx = 3;
        c.gridy = 1;
        c.gridwidth = 1;
        layout.setConstraints(addButton, c);
        panel.add(addButton);

        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 3;
        layout.setConstraints(delete, c);
        panel.add(delete);

        c.gridx = 3;
        c.gridy = 2;
        c.gridwidth = 1;
        layout.setConstraints(deleteButton, c);
        panel.add(deleteButton);

        getContentPane().add(scrollPane, BorderLayout.SOUTH);

        pack();
    }

    //追加ボタンを押すと、記述された社員名がリストに追加
    //削除ボタンを押すと、選択された社員名がリストより削除
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == addButton) {
            String str = textfield.getText();
            for (int i = 0; i < str.length(); i++) {
                if (!Character.isISOControl(str.charAt(i)) && !Character.isWhitespace(str.charAt(i))) {
                    System.out.println("insert!!");
                    model.addElement(str);
                    break;
                }
            }
        } else if (e.getSource() == deleteButton) {
            Object items[] = list.getSelectedValues();
            for (int i = 0; i < items.length; i++) {
                model.removeElement(items[i]);
            }
        }
    }

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp