Ver.0.95 準備 Javaフォルダに移動して…… mkdir Swing Swingフォルダに移動して…… cp ~gundam/Java/Swing . コマンドプロンプト(JDK)でないと起動しない ので注意!!! Swingって何? ・JavaのGUIコンポーネント集のこと ・初期のJavaから標準でサポートされていたAWTでデザイン性や 操作性の機能が乏しく本格的なGUIを実現したもので、 Sun Microsystems社とNetscape社が協力して作成 したもの。 http://www.bohyoh.com/Java/FAQ/FAQ00007.html Swingのイメージ フレームを作成しその上にペイン(窓ガラス)をおき その上にボタンとフレームを置いていくイメージ Swingコンポーネント ・Windowの部品 パネル・フレーム ボタン・メニュー ラベル・テキストエリア・テキストボックス ラジオボタン・チェックボックス などがある。 ・Swingコンポーネントを利用するには import javax.swing.*; をプログラムの冒頭に必要となる。 コンポーネントとは? ・何らかの機能を持ったプログラムの部品のこと import javax.swing.*; で袋を呼び出す 袋から取り出された部品 この袋に入っていた部品のことをコンポーネントと言う Swingの実行方法 javac XXX.java java XXX 普通に実行するだけです。(XXXはファイル名) Swingのプログラムイメージ import java.awt.*; import java.awt.event.*; import javax.swing.*; class XXX extends JPanel{ パネルでのグラフィック処理 パネルの設定・処理 パネル上でのイベント処理 } class XXX extends JFrame{ フレームへのパネルの配置 フレームの設定・処理 フレーム上でのイベント処理 } class XXX{ public static void main(String[] args){ JFrame w = new B05aFrame(); w.show(); } } Pacman.java の実行結果 Swingを用いてグラフィックを表示する Pacman.java 1 2 3 4 5 6 7 7' 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import javax.swing.*; import java.awt.event.*; import java.awt.*; PacmanクラスにJpaneを継承 public class Pacman extends JPanel{ public Color c = Color.green; グラフィックの描画 public void paintComponent(Graphics g){ を行うメソッド super.paintComponent(g); g.setColor(c); g.fillArc(100, 100, 100, 100, 30, 300); } public static void main(String argv[]){ JFrame f = new JFrame(); JFrameにContentPane f.getContentPane().add(new Pacman()); を取得させその上に f.addWindowListener(new WindowAdapter(){ Jpanelを載せている。 public void windowClosing(WindowEvent e){ System.exit(0); } }); f.setSize(300,300); ウィンドウが閉じられ f.show(); Jframeの表示 たときのイベント } } Pacman2.javaの実行結果 Swingを用いてグラフィックを表示する Swingを用いてボタンの生成する Pacman2.java 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public static void main(String argv[]){ JFrame f = new JFrame(); Container c = f.getContentPane(); Pacman2 p = new Pacman2(); c.add(p); JButton b = new JButton("Red"); c.add(b, BorderLayout.NORTH); Redという名前でボタンbを生成 ぺインの上側にボタンをのせる。 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); f.setSize(300,300); f.show(); } Pacman3.javaの実行結果 Swingを用いてグラフィックを表示する Swingを用いてボタンの生成する ボタンの動作設定をする Pacman3.java 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 } public void actionPerformed(ActionEvent e){ col = Color.red; repaint(); } 13:colにredを指定 14:際描写している public static void main(String argv[]){ JFrame f = new JFrame(); Container c = f.getContentPane(); Pacman3 p = new Pacman3(); c.add(p); RedというラベルでボタンBを生成 JButton b = new JButton("Red"); c.add(b, BorderLayout.NORTH); actionListerを呼び出し b.addActionListener(p); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); f.setSize(300,300); f.show(); 演習 Pacman3.javaを参考に,ボタンを押す度に赤と緑を 交互に変える PacmanRG.javaを作成してください。 Changeをクリックすると色が変わる ヒント ・actionPerformedの中の動作を考えてください。 ・If文を使います ・col = Color.red;で色を赤にします。 PacmanRG.javaの回答 actionPerformedの中で定義しないので注意 7 int i=0; ・ ・ 14 public void actionPerformed(ActionEvent e){ 15 if(i%2 == 0){ 16 col = Color.red; i÷2をすることで、偶数に 17 } else{ なった場合にredにしている。 18 col = Color.green; 奇数であればgreenになる。 19 } 再描写したあとでiを+している 20 repaint(); 21 i++; 22 } ・ ・ 19 JButton b = new JButton("Change"); Icon1.javaの実行結果 Swingを用いてアイコンを生成する Icon1.java 1 import javax.swing.*; 2 import java.awt.event.*; 3 import java.awt.*; 4 5 public class Icon1 extends JPanel{ 7:指定した画像をimgという 6 Icon1(){ 7 Icon img = new ImageIcon("C-01.gif"); アイコンとして生成 8:imgを乗せたlabという 8 JLabel lab = new JLabel(img); ラベルを生成 9 add(lab); 9:Jpanelにlabを乗せている 10 } 11 public static void main(String argv[]){ 12 JFrame f = new JFrame(); Icon2を呼び出している 13 f.getContentPane().add(new Icon1()); 14 f.addWindowListener(new WindowAdapter(){ 15 public void windowClosing(WindowEvent e){ 16 System.exit(0); 17 } 18 }); 19 f.setSize(300, 300); 20 f.show(); 21 } 22 } Icon2.javaの実行結果 Swingを用いて複数のアイコンを生成する Icon2.java 5 public class Icon2 extends JPanel{ 6 Icon2(){ 7 JLabel lab1 = new JLabel(new ImageIcon("C-01.gif")); 8 JLabel lab2 = new JLabel(new ImageIcon("C-02.gif")); 9 add(lab1); 10 add(lab2); 11 } 12 public static void main(String argv[]){ 13 JFrame f = new JFrame(); 14 f.getContentPane().add(new Icon2()); Icon2を呼び出している 15 f.addWindowListener(new WindowAdapter(){ 16 public void windowClosing(WindowEvent e){ 17 System.exit(0); 18 } 19 }); 20 f.setSize(300, 300); 21 f.show(); 22 } 23 } Icon3.javaの実行結果 Swingを用いてアイコンを表示する Swingを用いてボタンの生成する 絵が変わるボタンの動作設定をする Icon3.java 1 import javax.swing.*; 2 import java.awt.event.*; 3 import java.awt.*; 4 5 public class Icon3 extends JPanel implements ActionListener{ 6 Icon i1 = new ImageIcon("C-01.gif"); 7 Icon i2 = new ImageIcon("C-02.gif"); 8 JLabel lab; 9 Icon3(){ 10 lab = new JLabel("Tile"); 11:i1のアイコンをsetしている 11 lab.setIcon(i1); Changeというラベルでボタン 12 add(lab); bを生成 13 JButton b = new JButton("Change"); 14 add(b); 15 b.addActionListener(this); 16 } 17 public void actionPerformed(ActionEvent e){ 18 lab.setIcon(i2); Iconのi2を呼び出している 19 } Text1.javaの実行結果 Swingを用いたテキストフィールドの作成をする Text1.java 1 import javax.swing.*; 2 import java.awt.event.*; 3 import java.awt.*; 4 5 class Text1 extends JPanel implements ActionListener{ テキストフィールドtを定義 6 JTextField t; 7 JLabel lab; 8 Text1(){ 9 t = new JTextField("Write Here", 20); 10 t.addActionListener(this); 11 add(t); 12 lab = new JLabel("Tile"); 13 add(lab); 14 } 15 public void actionPerformed(ActionEvent e){ 16 lab.setText(t.getText().toUpperCase()); 17 } ・ ・ Write Hereと書かれ た20文字分のテキス トフィールドtを生成 t.getText()でテキスト フィールドtの中身を 取得し大文字にし lab.setTextでラベルに 貼り付けている Text2.javaの実行結果 Swingを用いたテキストフィールドの作成をする xが入力されたらその二倍を出力する Text2.java 1 import javax.swing.*; 2 import java.awt.event.*; 3 import java.awt.*; 4 5 class Text2 extends JPanel implements ActionListener{ 6 JTextField t; 7 JLabel lab; 8 Text2(){ 9 t = new JTextField("Input x", 20); 10 t.addActionListener(this); 11 add(t); 12 lab = new JLabel("* 2 = "); ラベルを生成し貼り付け 13 add(lab); 14 } 15 public void actionPerformed(ActionEvent e){ 15:Int型にtの内容を変換 16 int x = Integer.parseInt(t.getText()); 16:*2=という文字列とxの 17 lab.setText("* 2 = " + (x*2)); 18 } 計算結果をしてる。 ・ ・ 演習 シグモイド関数 f(x) = 1/(1 + e-x) を計算する Text3.javaを作成してください。 ヒント ・eはMath.expを用いる ・計算結果は少数の値が表示されるのでdoubleを用いる ・計算式はdouble f = 1/(1 + Math.exp(-x));となる ・TextFieldを1つとLabelを2つ作る
© Copyright 2025 ExpyDoc