• 検索結果がありません。

text_13.dvi

N/A
N/A
Protected

Academic year: 2021

シェア "text_13.dvi"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

ソフト ウェア演習

C

(2)

目 次

13

Java(8) { Swing(2)(

各種部品

,

図形描画

) 1

13.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

(3)

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 この他に、アイコンをラベルに配置するコンストラクタもありますが 、これについては参考文献を参照して下さい。

(4)

トラクタには、以下のようなものがあります

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 この他に、ラベルと同様にアイコンを入れることもできますが 、それについてはここでは扱いませんので、参考文献を参照して 下さい。

(5)

// 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と同様にアイコンをつけることもできます。

(6)

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() )

 

(7)

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

(8)

ベル

l4

は、イベント処理に使用するため、インスタンスフィールドとして宣言しています。

ActionEvent

の処理では 、

getActionCommand

メソッド によりコマンド 実行に使用した文字列

4

、つまり、ここではテ

キストフィールド の文字列を取得し 、それをラベル

l4

の文字列としています。また、

ItemEvent

の処理

では、イベントを発生したソースを

getItemSelectable

メソッドで調べ、また、

isSelected

メソッドで

選択されているかど うかを調べ、それにあったメッセージをラベルに表示しています。

なお、

getActionCommand

メソッドの他にも、

JTextField

クラスのインスタンスメソッドである

getText

メソッド によりテキストフィールド の文字列を取得することができます。

演習

13-1

TextCheckEvent.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度は閏年です。

(9)

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 )

(10)

色を扱うためには、

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 ) // 塗りつぶし円弧 } }  

(11)

// 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

(12)

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 ) }

 

(13)

// 正弦波を動かす

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 )

 

(14)

// コンテントペインに追加

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

(15)

演習

13-3

生年月日と調査年月を

JTextField

から入力し 、ボタンを押すと 、調査年月のバイオリズムの変化をグ

ラフで表示するプログラムを作成せよ。ここで、バイオリズムは身体、感情、知性の

3

種類があり、それ

ぞれ以下の式で表される。

Physical = sin 2

x

23



Sympathy = sin 2

x

28



Intellectual = sin 2

x

33



これらの式で、

x

は生まれた日からの経過日数である。たとえば 、図

13.3

のようなフレームとなる。

13.3:

バイオリズムアプ リケーション

(16)

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

x

23



Sympathy = sin 2

x

28



Intellectual = sin 2

x

33



これらの式で、

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

,

共立出版

,

桑原 恒夫 著

(17)

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)

Java Swing

プログラミング

Black Book

,

インプレス

, Steven Holzner

&

武藤健志 監修

16)

JBuilder

ではじめる

Java

プログラミング入門」

,

秀和システム

,

掌田津耶乃

図 13.2: DrawTest の実行結果

参照

関連したドキュメント

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

この数字は 2021 年末と比較すると約 40%の減少となっています。しかしひと月当たりの攻撃 件数を見てみると、 2022 年 1 月は 149 件であったのが 2022 年 3

当社グループにおきましては、コロナ禍において取り組んでまいりましたコスト削減を継続するとともに、収益

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

点から見たときに、 債務者に、 複数債権者の有する債権額を考慮することなく弁済することを可能にしているものとしては、

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

関西学院大学手話言語研究センターの研究員をしております松岡と申します。よろ

 大都市の責務として、ゼロエミッション東京を実現するためには、使用するエネルギーを可能な限り最小化するととも