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

