目次へ

解答例 - 実習課題3 - 14.テーブル

(実習課題3)

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

  • ウィンドウに含まれるコンポーネントはテーブルとコンボボックス。
  • テーブルの行数・列数・初期データは任意。
  • コンボボックスによってテーブル列の変更モードを切り替えられるようにする事。

解答例

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

package com.techscore.ui.chapter14.exercise3;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Hashtable;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class JTableComboboxFrame extends JFrame implements ActionListener {

    private JComboBox combo;
    private JTable table;
    private Hashtable modes;

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

        // JTable
        String data[][] = new String[5][5];
        String column[] = new String[5];

        for (int i = 0; i < 5; i++) {
            column[i] = "column" + i;
            for (int j = 0; j < 5; j++) {
                data[j][i] = "(" + i + "," + j + ")";
            }
        }

        table = new JTable(data, column);
        JScrollPane scroll = new JScrollPane(table);
        scroll.setPreferredSize(new Dimension(400, 100));
        getContentPane().add(scroll);

        // JComboBox
        modes = new Hashtable();
        modes.put("auto resize off", new Integer(JTable.AUTO_RESIZE_OFF));
        modes.put(
            "auto resize last column",
            new Integer(JTable.AUTO_RESIZE_LAST_COLUMN));
        modes.put(
            "auto resize subsequent columns",
            new Integer(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS));
        modes.put(
            "auto resize next column",
            new Integer(JTable.AUTO_RESIZE_NEXT_COLUMN));
        modes.put(
            "auto resize all columns",
            new Integer(JTable.AUTO_RESIZE_ALL_COLUMNS));

        combo = new JComboBox(modes.keySet().toArray());
        combo.addActionListener(this);
        getContentPane().add(combo, BorderLayout.SOUTH);

        pack();
    }

    public void actionPerformed(ActionEvent e) {
        table.setAutoResizeMode(
            ((Integer) (modes.get(combo.getSelectedItem().toString())))
                .intValue());
    }

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp