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