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