CUTTトップページに戻る | 書籍一覧に戻る


カットシステムの書籍のご案内

Java GUIプログラミング vol.2
表紙イメージ
著者大村 忠史
判型B5変型判,514頁,CD-ROM添付
本体価格 4,200円
ISBN978-4-87783-052-6 C3004

本書について

大好評『Java GUIプログラミング』シリーズ第2巻です。本書では、第1巻で取り上げることのできなかったJDesktopPane、JInternalFrame、JTree、JTable、TableCellRenderer、TableCellEditorなどについて、最新のJava環境であるJava2 SE v1.4での新機能も交えて詳しく解説します。

特に、非常に応用範囲の広いクラスであり、SwingのハイライトともいえるJTableについては、それを背後で支える数多くのクラス・イベント・リスナーを交えて本書の後半部分で詳細に記述しています。

第1巻に劣らず、さまざまな場面に応用できる豊富なサンプルソースコードを用意し、Javaプログラマ必携の書となっています。

主要目次

まえがき
付録CD-ROMの使い方
第1章JTextFieldとJTextArea
1-1JTextFieldの基本
1-2パスワードフィールド
1-3JTextFieldとActionイベント
1-4入力フィールドに対する入力制限(1)〜Keyイベントによるもの
1-5入力フィールドに対する入力制限(2)〜ドキュメントクラスによるもの
1-6JTextArea
1-7メモ帳
第2章コンボボックス
2-1コンボボックスの基本
2-2選択された項目を調べるItemEvent
2-3選択された項目を調べるActionEvent
2-4JComboBoxのポップアップに関するイベント〜Java2 SE v1.4の新機能
2-5プログラム内部から選択する
2-6追加・削除ができるようにする
2-7独自の項目表示処理を定義するListCellRenderer
第3章JDesktopPaneとJInternalFrame
3-1JDesktopPane・JInternalFrameの紹介
3-2JInternalFrameの初歩
3-3JInternalFrameのフレーム属性の設定
3-4レイヤー
3-5FocusEventとMouseEventとKeyEvent
3-6レイヤーを変更する
3-7JInternalFrameのウィンドウイベント
3-8インターナルフレームの状態変化を検知する
3-9JInternalFrameでお絵描き
3-10WindowListを作成する(1)
3-11WindowListを作成する(2)
3-12WindowListを作成する(3)
第4章JTree
4-1JTreeの紹介
4-2TreePathと行(ROW)
4-3JTreeのノードを辿る
4-4ノードを選択状態にする
4-5ノードを名前で検索する〜Java2 SE v1.4での新機能
4-6TreeSelectionEventとTreeSelectionListener
4-7JTreeとマウスイベント
4-8TreeExpansionEvent、TreeExpansionListener
4-9TreeWillExpandListener、ExpandVetoException(Java2 SE v1.4の新機能)
4-10TreeCellRenderer
第5章JTable
5-1JTableとJTableHeader
5-2横スクロール
5-3カラム名
5-4カラムサイズ
5-5JTableにデータを入れる〜配列から
5-6TableModelの最も基本的な使用法〜AbstractTableModel
5-7画像をセル内に貼り付ける
5-8JTableにデータを追加するDefaultTableModel (1)
5-9JTableにデータを追加するDefaultTableModel (2)
5-10ファイルからデータを読み込む
第6章JTableでの選択・カーソル移動
6-1JTable上での選択を検出するMouseEvent
6-2ロー(行)の選択を検出するvalueChanged()
6-3カラム(列)の選択を検出するcolumnSelectionChanged()
6-4ロー(行)とカラム(列)の選択を検出する
6-5ロー(行)とカラム(列)の複数選択
6-6プログラムの内部から選択する〜ローの選択
6-7プログラムの内部から選択する〜カラムの選択
6-8セルの選択〜マウスクリックの場合のさまざまなイベント処理
6-9セルの選択〜カーソルキー指定の場合のさまざまなイベント処理
6-10JTable上でのカーソル移動をカスタマイズする
第7章JTableにおけるデータ操作
7-1ローの削除と挿入
7-2ローとカラムの変更に関連したイベント
7-3ローの移動
7-4カラムの追加〜カラム単位でデータを入れる
7-5カラムを最右列に追加
7-6カラムの移動
7-7カラムの削除
7-8カラムごとの属性TableColumn
7-9選択されているセルからデータを取り出す
7-10セルのデータをクリップボードにコピーする
7-11クリップボードからデータを取り出し、セルにセットする
第8章TableCellRenderer
8-1TableCellRendererの紹介
8-2行番号を付ける
8-3列名を決め直すヘッダレンダラー
8-4セルの文字列の表示のカスタマイズを行う
8-5商品マスターを使った商品コードから商品名への変換
8-6商品コードから単価を求める
8-7ツールチップ
8-8カラムのクラスを指定する
第9章TableCellEditor
9-1JTextFieldタイプのセルエディター
9-2編集終了のタイミングを知る
9-3セルの編集中に、他のコンポーネントにフォーカスが移ってしまうとき
9-4JComboBoxタイプのセルエディター
9-5セルエディターと他のセルとを連動させる
9-6JCheckBoxタイプのテーブルセルエディター
9-7JListをセルエディターにする
9-8任意のセルに任意のコンポーネントを置いて機能させる
さくいん

本文訂正

本文中に誤りがありました。お詫びして訂正いたします。

場所…19ページ


《正》


修正後の JTextFieldTest5.java は、以下のようになります。

//-----------------------------------------------------------------------

import javax.swing.*;

import javax.swing.border.*;

import javax.swing.text.*;

public class JTextFieldTest5 extends JFrame {

public static void main( String[] args ){

JFrame w = new JTextFieldTest5( "JTextFieldTest5" );

w.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

w.setSize( 200, 150 );

w.setVisible( true );

}

public JTextFieldTest5( String title ){

super( title );

JPanel pane = (JPanel)getContentPane();

pane.setLayout( new BoxLayout( pane, BoxLayout.Y_AXIS ) );

JTextField tf1 = new JTextField();

tf1.setDocument( new NumericDocument() );

tf1.setBorder( new TitledBorder( "テキストフィールド1" ) );

pane.add( tf1 );

JTextField tf2 = new JTextField();

tf2.setDocument( new LimitedDocument( 10 ) );

tf2.setBorder( new TitledBorder( "テキストフィールド2" ) );

pane.add( tf2 );

}

class NumericDocument extends PlainDocument {

String validValues = "0123456789.+-";

public void insertString( int offset, String str, AttributeSet a ) {

//2007/05/22 修正:

// クリップボードから貼り付けた場合には 一度に複数文字が渡されてくる場合がある

// その場合を考慮して 1文字ずつチェックする。

for( int i=0 ; i< str.length() ; i++ ){

if( validValues.indexOf( str.charAt(i) ) == -1 ){

return;

}

}

try{

super.insertString( offset, str, a );

}

catch( BadLocationException e ) {

System.out.println( e );

}

}

}

class LimitedDocument extends PlainDocument {

int limit;

LimitedDocument( int limit ){ this.limit = limit; }

public void insertString( int offset, String str, AttributeSet a ) {

if( getLength() >= limit ){

return;

}

try{

super.insertString( offset, str, a );

}

catch( BadLocationException e ) {

System.out.println( e );

}

}

}

}

//------------------------------------------------------------------------


CUTTトップページに戻る | 書籍一覧に戻る

[XHTML 1.1] [CSS]