ソフト ウェア演習
C目 次
第
13章
Java(8) { Swing(2)(各種部品
,図形描画
) 113.1
第
13
回演習内容
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :1
13.2
各種部品
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :1
13.2.1
ラベル
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :1
13.2.2
ボタン
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :1
13.2.3
チェックボックス
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :3
13.2.4
テキストフィールド
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :4
13.3
図形描画
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :7
13.3.1
図形描画
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :7
13.3.2
図形描画でのイベント処理
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :10
13.4
課題
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :14
第
13章
Java(8) { Swing(2)(各種部品
,図形
描画
) 13.1第
13回演習内容
第
12
回では、
Swing
の基礎であるフレームとレ イアウト、および イベント処理についての演習を行いま
した。今回はさまざ まな部品についての演習を行います。
第
13
回目の演習内容は以下の通りです。
各種部品
図形描画
13.2各種部品
Swing
には、実にさまざ まな部品がクラスとして定義されています。ここでは全てを紹介しきれません
ので、積極的に参考文献を活用して下さい。ここでは、部品の中でも頻繁に使用される、ラベル、ボタン 、
チェックボックス、テキストフィールド について紹介します。
13.2.1ラベル
前回の演習にも出てきた通り、
ラベル
(label)は文字列を表示する部品で、
JLabel
クラスを使用します。
JLabel
のコンストラクタには以下のようなものがあります
1。
public JLabel()public JLabel( String text )
public JLabel( String text, int alignment )
ここで、
text
はラベルに表示する文字列、
alignment
は水平方向の配置を表す定数で、
JLabel.LEFT // 左寄せ JLabel.CENTER // 中央揃え JLabel.RIGHT // 右寄せのいずれかを指定します。
13.2.2ボタン
ボタン
(button)は、マウスでクリックすることにより、プログラムになんらかの動作を与えるための
部品です。ボタンを作成するためには、
JButton
クラスのインスタンスを作成します。
JButton
のコンス
1 この他に、アイコンをラベルに配置するコンストラクタもありますが 、これについては参考文献を参照して下さい。トラクタには、以下のようなものがあります
2。
public JButton()
public JButton( String text )
1
つめのコンストラクタではボタンのみが作成されますが 、
2
つ目のコンストラクタでは文字列
text
を持
つボタンを作成します。
JButton
では、ボタンが押されたとき
ActionEvent
が発生しますので、このイベントをイベントリスナ
へ登録することによりボタンが押されたときの処理を設定することができます。
次に、ボタンとアクション イベントを使用した例を示します。
// ButtonAction.java import javax.swing.* import java.awt.*public class ButtonAction extends JFrame {
ButtonAction() { // コンストラクタ
super( "Button Action" )
Container myContainer = getContentPane() // コンテントペイン取得
JButton mybutton = new JButton( "Button" ) // ボタン作成
myContainer.add( mybutton ) // コンテントペインへ追加
setSize( 150, 100 ) // サイズ設定
setVisible( true ) // 表示
mybutton.addActionListener( new ActListener2( mybutton ) )
// ボタンへアクション イベントを登録
addWindowListener( new WinAdapter() ) // ウィンド ウイベントを登録
}
// mainメソッド
public static void main( String ] args ) { ButtonAction buttonAction = new ButtonAction() } } // WinAdapter.java // ウィンド ウイベントに関するイベント処理の定義 import java.awt.event.*
public class WinAdapter extends WindowAdapter {
public void windowClosing( WindowEvent we ) { // 閉じ るとき
System.exit( 0 ) } } 2 この他に、ラベルと同様にアイコンを入れることもできますが 、それについてはここでは扱いませんので、参考文献を参照して 下さい。
// ActListener2.java import javax.swing.* import java.awt.event.*
public class ActListener2 implements ActionListener { JButton button // 文字列を変えるボタン
boolean fButton = true // トグル用フラグ
ActListener2( JButton button ) { // コンストラクタ
this.button = button }
public void actionPerformed( ActionEvent ae ) { if( fButton ) { button.setText( "Press" ) // 文字列変更 fButton = false // トグル切替 } else { button.setText( "Button" ) // 文字列変更 fButton = true // トグル切替 } } }
このプログラムは、第
12
回のテキストで示した
MyActionEvent.java
に変更を加えたものです。第
12
回のプログラムでは、ボタンを押したときに標準出力にその旨通知していましたが 、ここでは、ボタンを押
すとボタンの文字列を変更するようにし 、もう一度押すとまた元の文字列に戻るように変更しています。こ
こで、文字列を変更するのに
setText
メソッド を使用していますが 、これは
JComponent
クラスのメソッ
ド であり、
Swing
のほとんど の部品は
JComponent
クラスを継承しているので、他の部品の文字列を変更
する場合にも使用できます。
13.2.3チェックボックス
ある項目について、
「チェックする」
「チェックしない」のいずれかを選択させたいという場合に使用する
のがチェックボックス
(check box)です。コンストラクタには以下のものがあります
3。
public JCheckBox()public JCheckBox( String text )
public JCheckBox( String text, boolean selected )
ここで 、
text
は項目の文字列です。また、
selected
に
true
をセットすると 、表示された時点でその項
目がチェックされている状態になります。プ ログ ラム内でチェックされている状態を変更したい場合は 、
JCheckBox
クラスのインスタン スメソッド である
setSelected( boolean selected )
メソッド を使用
します。
JCheckBox
は、マウスでチェックボックスをクリックしたときに
ItemEvent
を発生させます。このイベ
ントを処理するには、
ItemListener
インタフェースを実装し 、
itemStateChanged
メソッド をオーバー
ライド することにより行います。
3 JLabelやJButtonと同様にアイコンをつけることもできます。13.2.4
テキスト フィールド
テキスト フィールド
(text eld)は、
1
行の文字列の入力や表示に使用する部品です。コンストラクタ
は以下の通りです。
public JTextField()
public JTextField( String text ) public JTextField( int column )
public JTextField( String text, int column )
ここで、
text
はテキストフィールド に表示する文字列、
column
はテキストフィールド の桁数です。
JTextField
は、テキストフィールドで入力可能状態のとき、キーボード の
Return
キー
(
または
Enter
キー
)
を押すと
ActionEvent
を発生させます。第
12
回の
MyActionEvent.java
でも示したように、この
イベントを処理するためには
ActionListener
インタフェースを実装し 、
actionPerformed
メソッド を
オーバーライド することにより行います。
次に、第
12
回で示した
MyChoice.java
に変更を加えた例を示します。
// TextCheckEvent.java import javax.swing.* import java.awt.* import java.awt.event.*public class TextCheckEvent extends JFrame implements ItemListener, ActionListener { JCheckBox c1, c2
JLabel l4
TextCheckEvent() {
super( "TextCheckEvent" )
Container myContainer = getContentPane() myContainer.setLayout( new BorderLayout() ) // パネルp1の作成
JPanel p1 = new JPanel( new FlowLayout() ) JLabel l1 = new JLabel( "Your name please." ) JTextField t = new JTextField( 20 )
p1.add( l1 ) p1.add( t ) // パネルp2の作成
JPanel p2 = new JPanel( new BorderLayout() ) JLabel l2 = new JLabel( "Make sure your choice." )
c1 = new JCheckBox( "OxfordAdvanced Learner's Dictionary" ) c2 = new JCheckBox( "Longman Language Activator" )
p2.add( l2, BorderLayout.NORTH ) p2.add( c1, BorderLayout.CENTER ) p2.add( c2, BorderLayout.SOUTH ) // パネルp3の作成(パネルp4とラベルl4)
JPanel p3 = new JPanel( new BorderLayout() ) // パネルp4の作成
JPanel p4 = new JPanel( new FlowLayout() )
JLabel l3 = new JLabel( "Are you sure?" ) JButton b1 = new JButton( "Yes, I am." ) JButton b2 = new JButton( "No, I'm not." ) p4.add( l3 ) p4.add( b1 ) p4.add( b2 ) // ラベルl4 l4 = new JLabel( " " ) p3.add( p4, BorderLayout.NORTH ) // パネルp4を追加 p3.add( l4, BorderLayout.SOUTH ) // ラベルl4を追加 myContainer.add( p1, BorderLayout.NORTH ) // パネルp1を追加 myContainer.add( p2, BorderLayout.CENTER ) // パネルp2を追加 myContainer.add( p3, BorderLayout.SOUTH ) // パネルp3を追加 pack() // 要素をパック setVisible( true ) // 表示 t.addActionListener( this ) // イベントリスナ登録 c1.addItemListener( this ) c2.addItemListener( this )
addWindowListener( new WinAdapter() ) }
// テキストフィールド のイベント
public void actionPerformed( ActionEvent ae ) { l4.setText( ae.getActionCommand() )
}
// 項目が選択されたときのイベント処理
public void itemStateChanged( ItemEvent ie ) { if( ie.getItemSelectable() == c1 ) {
if( c1.isSelected() )
l4.setText( "You checked Oxford." ) else
l4.setText( "You checked Oxford off." ) }
else {
if( c2.isSelected() )
l4.setText( "You checked Longman." ) else
l4.setText( "You checked Longman off." ) }
}
// mainメソッド
public static void main( String ] args ) {
TextCheckEvent textCheckEvent = new TextCheckEvent() }
}
このプログラムは、第
12
回で示した
MyChoice.java
に
ItemEvent
と
ActionEvent
の処理を加えたも
のです。このプログラムの
TextCheckEvent
クラスは、
JFrame
クラスを継承し 、
ItemListener
インタ
フェースと
ActionListener
インタフェースを実装します。これにより、イベントリスナへの登録は
this
ベル
l4
は、イベント処理に使用するため、インスタンスフィールドとして宣言しています。
ActionEvent
の処理では 、
getActionCommand
メソッド によりコマンド 実行に使用した文字列
4、つまり、ここではテ
キストフィールド の文字列を取得し 、それをラベル
l4
の文字列としています。また、
ItemEvent
の処理
では、イベントを発生したソースを
getItemSelectable
メソッドで調べ、また、
isSelected
メソッドで
選択されているかど うかを調べ、それにあったメッセージをラベルに表示しています。
なお、
getActionCommand
メソッドの他にも、
JTextField
クラスのインスタンスメソッドである
getText
メソッド によりテキストフィールド の文字列を取得することができます。
演習
13-1TextCheckEvent.java
を以下のように変更せよ。テキストフィールドとチェックボックスでのイベント
は取得せず、ボタンを押したときのみイベントを取得するようにする。
\
Yes, I am.
"
ボタンが押された
とき、
<name> selects <dic>
とフレームの一番下のラベルに表示するようにする。ここで、
<name>
はテキストフィールドから取得した
文字列で、
<dic>
はチェックボックスでチェックされた辞書の名前の文字列とする。また、
\
No, I'm not.
"
ボタンが押されたときは、テキストフィールド とチェックボックスをクリアするものとする。
演習
13-2生年月日と調査年月日を
JTextField
から入力し 、ボタンを押すと 、生年月日から調査年月日までの日
数を計算する、図
13.1
のようなプログラムを作成せよ。なお、日数計算には閏年
5も考慮に入れること。
図
13.1:
課題出力サンプル
4 ボタンを押したときはボタンの文字列を取得します。 5 4年に1度は閏年ですが 、100年に1度は閏年ではありません。しかし 、400年に1度は閏年です。13.3
図形描画
13.3.1図形描画
Swing
では、ボタンやテキストフィールド 等各種部品の他に、図形も描画することができます。図形を描
画するもっとも簡単な方法は
JComponent
クラスを継承することです。
JComponent
クラスは
Swing
の各
種部品のスーパクラスですが 、このクラスには
paintComponent
メソッドが用意されており、このメソッ
ド をオーバーライド することにより、メソッド に記述された内容が画面に描画されます。
実際に描画を行うには 、
Graphics
クラスのメソッド を使用し ます。以下に 、代表的なインスタン スメ
ソッド を示します。
void setColor( Color c )
描画する色を
c
に設定します。
void drawString( String text, int x, int y )
文字列
text
を座標
(x, y)
に描画します。
void drawLine( int x1, int y1, int x2, int y2 )
座標
(x1, y1)
と座標
(x2, y2)
を結ぶ直線を描画します。
void drawRect( int x, int y, int w, int h )
座標
(x, y)
を左上隅とし 、幅
w
、高さ
h
の四角形を描画します。
void fillRect( int x, int y, int w, int h )
同四角形を塗りつぶして描画します。
void clearRect( int x, int y, int w, int h )
同四角形をバックグラウンド の色で塗りつぶします。
void drawOval( int x, int y, int w, int h )
座標
(x, y)
を左上隅とし 、幅
w
、高さ
h
の四角形に入る円
(
楕円
)
を描画します。
void fillOval( int x, int y, int w, int h )
同円
(
楕円
)
を塗りつぶして描画します。
void drawArc( int x, int y, int w, int h, int deg0, int deg1 )
座標
(x, y)
を左上隅とし 、幅
w
、高さ
h
の四角形に入る、角度
deg0
を始まりとした角度
deg1
の円
弧を描画します。
void fillArc( int x, int y, int w, int h, int deg0, int deg1 )
同円弧を塗りつぶして描画します。
void drawPolygon( int ] x, int ] y, int n )
それぞれの頂点の座標が
x
の配列および
y
の配列で示される
n
個の頂点をもつ多角形を描画します。
最初の頂点と最後の頂点は自動的に接続されます。
void fillPolygon( int ] x, int ] y, int n )
同多角形を塗りつぶして描画します。
void drawPolyline( int ] x, int ] y, int n )
色を扱うためには、
Color
クラスを使用します。
Color
クラスのコンストラクタは以下のようになって
います。
public Color( int red, int green, int blue ) public Color( int rgb )
public Color( float r, float g, float b )
最初のコンストラクタでは、赤
(
red
)
、緑
(
green
)
、青
(
blue
)
の濃度を
0
∼
255
の
int
型で与えます。
2
番
目のコンストラクタでは、
rgb
の
23
∼
16
ビットへ赤、
15
∼
8
ビットへ緑、
7
∼
0
ビットへ青の濃度の値を設
定します。これは、色の濃度を
16
進数表現で与える場合などに使用します。
3
番目のコンストラクタでは、
赤
(
r
)
、緑
(
g
)
、青
(
b
)
の濃度を
0.0f
∼
1.0f
の
float
型で与えます。
また、
Color
クラスでは、表
13.1
に示すような特定の色を表す定数がクラスフィールドとして定義され
ています。
表
13.1: Color
クラスのクラスフィールド
フィールド 名
色
フィールド 名
色
black
黒
yellow
黄
white
白
orange
オレンジ
red
赤
pink
ピンク
gree
緑
darkGray
ダークグレ イ
blue
青
gray
グレ イ
cyan
シアン
lightGray
ライトグレ イ
magenta
マゼンタ
次に、これらを使用した例を示します。
// MyDraw.java import javax.swing.* import java.awt.*public class MyDraw extends JComponent { MyDraw() {
setPreferredSize( new Dimension( 300, 300 ) ) // サイズ設定
}
// paintComponentメソッド は自動的に呼ばれる
public void paintComponent( Graphics g ) {
super.paintComponent( g ) // スーパークラスのメソッド 呼出
g.setColor( Color.blue ) // 色の設定
g.drawString( "Graphics objects.", 50, 50 ) // 文字列
g.setColor( Color.yellow ) g.drawOval( 10, 70, 80, 80 ) // 塗りつぶし楕円 g.setColor( Color.green ) g.fillRect( 100, 100, 150, 50 ) // 塗りつぶし長方形 g.setColor( Color.red ) g.fillArc( 50, 150, 200, 200, 0, 60 ) // 塗りつぶし円弧 } }
// DrawTest.java import javax.swing.* import java.awt.* import java.awt.event.*
public class DrawTest extends JFrame {
public DrawTest() { // コンストラクタ
super( "DrawTest" )
Container myContainer = getContentPane()
MyDraw myDraw = new MyDraw() // 描画用のクラスのインスタンス
myContainer.add( myDraw ) // コンテントペインに追加
addWindowListener( new WinAdapter() ) pack()
setVisible( true ) }
// mainメソッド
public static void main( String ] args ) { DrawTest DrawTest = new DrawTest() }
}
DrawTest
クラスを実行すると 、図
13.2
のようなウィンド ウが作成されます。
図
13.2:
DrawTest
の実行結果
MyDraw
クラスは 、
JComponent
クラスを継承し ています。コン ストラクタでは 、
MyDraw
クラスの大
きさを設定し ます。ここで行っているように、コンポーネント
6の大きさを内部的に変更したい場合は 、
6
setPreferredSize
メソッドを使用します。
setPreferredSize
メソッド は
Dimension
クラスのオブジェ
クトを引数としてとります。
Dimension
クラスはオブジェクトの幅と高さを指定するクラスです。
paintComponent
メソッド では 、引数となっている
Graphics
クラスのオブジェクトを利用して、実際
に描画を行います。この メソッド のはじ めに 、
super.paintComponent( g )
によりスーパークラスの
paintComponent
メソッド を呼び出しています。スーパークラスの
paintComponent
メソッド では、描画
前に必要な準備にあたる処理も行っています。そのため、サブ クラスの
paintComponent
メソッド では 、
これらの準備を行うために、スーパークラスの
paintComponent
メソッド をあらかじめ具体的な処理の前
に呼び出す必要があります。
なお、ここで定義した
paintComponent
メソッド は、自動的に呼ばれるため、他のメソッド から呼び出
す必要はありません。
DrawTest
クラスで行っているように、
MyDraw
クラスのオブジェクトは他の部品と同様にフレームやパ
ネルに配置することができます。
13.3.2図形描画でのイベント 処理
前節で紹介した方法は、単に描画を行うというものですが 、プログラムを作成していくうえでは、描画し
たものを動かしたいといった要求や、イベントに合わせて描画も変更したいという要求などが出てきます。
ここでは、これらの処理を行う方法を紹介します。
// DrawSine.java import javax.swing.* import java.awt.*public class DrawSine extends JComponent { int startX
DrawSine() { startX = 0
setPreferredSize( new Dimension( 360, 200 ) ) // サイズ設定
}
// paintComponentメソッド は自動的に呼ばれる
public void paintComponent( Graphics g ) {
super.paintComponent( g ) // スーパークラスのメソッド を呼出
g.drawLine( 0, 100, 360, 100 ) // 中心線
// 線を描くための座標値を入れる配列
int ] xpoints = new int 37] int ] ypoints = new int 37] // 描画用の座標値を計算
for( int i = 0 i < xpoints.length i++ ) { xpointsi] = i * 10
ypointsi] = (int)(100-100*Math.sin( 2*Math.PI*(startX+i)/36 )) }
// 正弦波を描く
g.setColor( Color.red )
g.drawPolyline( xpoints, ypoints, xpoints.length ) }
// 正弦波を動かす
void move() {
Graphics g = getGraphics() // Graphics取得
for( int i = 0 i < 20 i++ ) { // 背景をクリア
g.clearRect( 0, 0, getWidth(), getHeight() ) startX-- // 位相を変える update( g ) // 再描画 // 時間つぶし try { Thread.sleep( 50 ) } catch( Exception e ) { e.printStackTrace() } } } // 元に戻す void reset() { startX = 0 // startXを初期化 repaint() // 再描画 } } // DrawAction.java import javax.swing.* import java.awt.* import java.awt.event.*
public class DrawAction extends JFrame implements ActionListener { DrawSine drawSine
// コンストラクタ
public DrawAction() { super( "DrawAction" )
Container myContainer = getContentPane() // 描画用のクラスのインスタンス
drawSine = new DrawSine() // ボタン群用のパネル
JPanel panel = new JPanel( new FlowLayout() ) JButton move = new JButton( "MOVE" )
JButton reset = new JButton( "RESET" ) JButton exit = new JButton( "EXIT" ) panel.add( move )
panel.add( reset ) panel.add( exit )
// コンテントペインに追加
myContainer.add( drawSine, BorderLayout.NORTH ) myContainer.add( panel, BorderLayout.SOUTH ) // イベント登録
move.addActionListener( this ) reset.addActionListener( this ) exit.addActionListener( this ) addWindowListener( new WinAdapter() ) pack()
setVisible( true ) }
// ボタンを押したときのイベント処理
public void actionPerformed( ActionEvent ae ) { if( ae.getActionCommand().equals( "MOVE" ) )
drawSine.move()
else if( ae.getActionCommand().equals( "RESET" ) ) drawSine.reset()
else
System.exit( 0 ) }
// mainメソッド
public static void main( String ] args ) { DrawAction drawAction = new DrawAction() }
}
このプログラムでは、描画部分に正弦波を描画し 、その他に
MOVE
ボタン 、
RESET
ボタン 、
EXIT
ボタン
の
3
つのボタンを配置しています。
MOVE
ボタンを押すと正弦波が右側へ移動します。また、
RESET
ボタン
を押すと最初の位置へ戻り、
EXIT
ボタンでプログラムを終了します。
DrawSine
クラスでは、正弦波を移動させるため、位相基準値
startX
をフィールドとして宣言し 、使用
しています。このクラスのコンストラクタでは、位相基準値の初期値を設定し 、また、このコンポーネン
トの大きさを設定しており、
paintComponent
メソッド では、
startX
を基準に正弦波を描画しています。
MOVE
ボタンを押したときの処理は 、
DrawSine
クラスの
move
メソッド で行います。ここでは 、まず
このクラスの
Graphics
オブジェクトを
getGraphics
メソッド を使用して取得しています。これにより、
paintComponent
以外のメソッド でも描画を行うことができます。そして、
startX
を変化させ、
update
メソッドを使用して再描画させています。
JComponent
クラスの
update
メソッドは、背景をクリアしない
ため、必要ならばここで行っているように自分でクリアする必要があります。
reset
メソッド では
startX
を初期値に戻し 、再描画させています。ここで、再描画させるのに
repaint
演習
13-3生年月日と調査年月を
JTextField
から入力し 、ボタンを押すと 、調査年月のバイオリズムの変化をグ
ラフで表示するプログラムを作成せよ。ここで、バイオリズムは身体、感情、知性の
3
種類があり、それ
ぞれ以下の式で表される。
Physical = sin 2
x23
Sympathy = sin 2
x28
Intellectual = sin 2
x33
これらの式で、
xは生まれた日からの経過日数である。たとえば 、図
13.3
のようなフレームとなる。
図
13.3:
バイオリズムアプ リケーション
13.4
課題
必須課題については必ずレポートを提出してください。自由課題にもぜひ挑戦してみましょう。プログ
ラムを作成する課題については、作成したソースプログラムおよびその実行に必要なソースプログラムと、
その実行結果を添付してください。また、作成したウィンド ウの画面イメージも添付してください。
2必須課題
1.
TextCheckEvent.java
を以下のように変更せよ。テキストフィールドとチェックボックスでのイベン
トは取得せず、ボタンを押したときのみイベントを取得するようにする。
\
Yes, I am.
"
ボタンが押
されたとき、
<name> selects <dic>
とフレームの一番下のラベルに表示するようにする。ここで、
<name>
はテキストフィールドから取得
した文字列で 、
<dic>
はチェックボックスでチェックされた辞書の名前の文字列とする。また 、
\
No,
I'm not.
"
ボタンが押されたときは 、テキストフィールド とチェックボックスをクリアするものとす
る。
(演習
13-1)2.
生年月日と調査年月日を
JTextField
から入力し 、ボタンを押すと 、生年月日から調査年月日までの
日数を計算する、図
13.1
のようなプログラムを作成せよ。なお、日数計算には閏年も考慮に入れる
こと。
(演習
13-2)3.
生年月日と調査年月を
JTextField
から入力し 、ボタンを押すと 、調査年月のバイオリズムの変化を
グラフで表示するプログラムを作成せよ。ここで、バイオリズムは身体、感情、知性の
3
種類があり、
それぞれ以下の式で表される。
Physical = sin 2
x23
Sympathy = sin 2
x28
Intellectual = sin 2
x33
これらの式で、
xは生まれた日からの経過日数である。たとえば 、図
13.3
のようなフレームとなる。
(演習
13-3) 2自由課題
1. Swing
では、テキストで紹介した部品のほかにもたくさんの部品が存在する。どのような部品がある
かまとめよ。
2.
描画機能を駆使し 、
/usr/local4/doc/SoftABC_2001/SoftC_PsFiles/data/Hatena.class
と同等
のものを作成せよ。
3.
テキスト内の
DrawSine.java
では、正弦波が移動するとき画面がちらつくという欠点がある。
DrawSine.java
を改良し 、この問題を修正せよ。
4.
簡単なお絵書きソフトを作成せよ。このソフトでは、筆の太さと色を変えることができるようにする
こと。
参考文献
1)「
3
日で解る
Java
」
,
共立出版
,
桑原 恒夫 著
2)
「
JAVA
実践プログラミング 」
,
オライリージャパン
, Patrick Niemeyer & Joshua Peck
著
,
安藤進 訳
3)「
Java
パワープログラミング 」
,
ソフトバンク
, Paul Tyma, Gabriel Torok, & Troy Downing
著
,
吉川
明広 訳
4)
「
Java
プログラムデザイン 」
,
ソフトバンク
,
戸松豊和 著
5)
「
JAVA
プログラムクイックリファレンス」
,
オライリージャパン
, David Flanagan
著
,
豊福剛 訳
6)「
JAVA
入門」
,
インプレス
, Nathan Gurewich & Ori Gurewich
著
,
石川和也 訳
7)
「
Internet Language Java
入門」
,
技術評論社
,
河西朝雄 著
8)
「
Java
言語入門」
,
プレンティスホール
, Laura Lemay, & Charles L. Perkins
著
,
武舎広幸
, &
久野禎
子
, &
久野靖 訳
9)
「基礎からの
JAVA2
」
,
工学社
,
足立理一 著
10)
「独習
Java
」
,
翔泳社
, Joseph O'Neil
著
,
武藤健志 監修
11)
「速習
Java Swing
プログラミング 」
,
ソフトバンク
, Satyaraj Pantham
著
,
岩谷宏 訳
12)「
Swing
による
Java GUI
プログラミング 」
,
カットシステム
,
大村忠志 著
13)
「
Swing
による
Java GUI
プログラミング
II
」
,
カットシステム
,
大村忠志 著
14)「
Swing
による
Java GUI
プログラミング
III
」
,
カットシステム
,
大村忠志
15)