Java 言語 第 11 回ウインドウ型アプリケーション (2) 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp
メニュー (1) メニューを組み込むときには,MenuBar オブジェクトに Menu オブジェクトを登録し, その Menu オブジェクトに MenuItem オブジェクトを登録する 2 つの Menu オブジェクト File New Open Exit Help Keyword Version 1 つの MenuBar オブジェクト 5 つの MenuItem オブジェクト
メニュー (2) メニューの作り方 MenuBar mbar; Menu mnu1, mnu2; MenuItem itm11, itm12, itm13, itm14;... mbar = new MenuBar(); mnu1 = new Menu("File"); itm11 = new MenuItem("new"); mnu1.add(itm11); itm11.addactionlistener(this); item12 = new MenuItem("open"); mnu1.add(itm12); itm12.addactionlistener(this);... mbar.add(mnu1); setmenubar(mbar);
メニュー (3) メニューを選択すると actionperformed メソッドが起動されるので, どのメニューが選択されたのかを調べ, そのメニューに対応する処理を実行する public void actionperformed(actionevent e) { MenuItem itm = (MenuItem)e.getSource(); if (itm == itm11) lb.settext("menu-11 を選択しました "); else if (itm == itm12) System.exit(0); // 終了する else if (itm == itm21) lb.settext("menu-21 を選択しました ");
import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements ActionListener { MenuBar mbar; Menu mnu1, mnu2, mnu22; MenuItem itm11, itm12, itm21, itm221, itm222; Label lb; public MyFrame(String title) { super(title); lb = new Label(" メニューを選択してください "); add(lb, BorderLayout.SOUTH); mbar = new MenuBar(); mnu1 = new Menu("MENU-1"); itm11 = new MenuItem("menu-11"); itm11.addactionlistener(this); mnu1.add(itm11); itm12 = new MenuItem(" 終了 "); itm12.addactionlistener(this); mnu1.add(itm12); mbar.add(mnu1); // メニューバーに登録する mnu2 = new Menu("MENU-2"); itm21 = new MenuItem("menu-21"); itm21.addactionlistener(this); mnu2.add(itm21); mnu2.addseparator(); // 区分線を表示 mnu22 = new Menu("menu-22"); // MenuItem() ではないので注意 itm221 = new MenuItem("menu-221"); itm221.addactionlistener(this); mnu22.add(itm221); itm222 = new MenuItem("menu-222"); itm222.addactionlistener(this); mnu22.add(itm222); mnu2.add(mnu22); // MenuにMenuを加える mbar.add(mnu2); // メニューバーに登録する setmenubar(mbar); // メニューバー全体をシステムに設定 addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) {System.exit(0); ); public void actionperformed(actionevent e) { MenuItem itm = (MenuItem)e.getSource(); if (itm == itm11) lb.settext("menu-11 を選択しました "); else if (itm == itm12) System.exit(0); // 終了する else if (itm == itm21) lb.settext("menu-21 を選択しました "); else if (itm == itm221) lb.settext("menu-221 を選択しました "); else if (itm == itm222) lb.settext("menu-222 を選択しました "); public class JbMenu1 { // JbMenu1.java [java] public static void main(string args[]) { MyFrame frm = new MyFrame(" メニューテスト "); frm.setsize(320, 200); // 窓サイズを横 300, 縦 200にする frm.setvisible(true) ; // フレームを表示する
Swing
AWT と Swing AWT は Java 用 GUI として最初の Java から用意されたが, AWT は OS の機能を利用するため, 環境依存という欠点を持つ これに対して,Sun は Swing と呼ばれる Java 自身が持つ GUI 機能を実装した Swing は AWT の上位互換機能として用意されたので,AWT の機能のほとんどを利用することができる AWT Swing Applet JApplet Bottun JBottun CheckBox JCheckBox などクラスには J が頭につく また, import javax.swing.*; が必要となる
import java.awt.*; import javax.swing.*; // この import を記述する import java.awt.event.*; /* <APPLET CODE=JbSwng1.class WIDTH=300 HEIGHT=100> </APPLET> */ public class JbSwng1 extends JApplet implements ActionListener { JTextField txt1, txt2; //Swing のテキストフィールドと JButton btn1, btn2; // ボタンを宣言する public void init() { // 起動時設定をする Container cntner = getcontentpane(); FlowLayout flw = new FlowLayout(FlowLayout.CENTER, 5, 5); cntner.setlayout(flw); // フローレイアウトを設定 txt1 = new JTextField(25); cntner.add(txt1); // 25 文字幅の txt2 = new JTextField(25); cntner.add(txt2); // テキストフィールドを登録する btn1 = new JButton("Copy"); // ボタン 1 を登録する btn1.addactionlistener(this); cntner.add(btn1); btn2 = new JButton("Clear"); // ボタン 2 を登録する btn2.addactionlistener(this); cntner.add(btn2); public void actionperformed(actionevent e) { JButton btn = (JButton)e.getSource(); if (btn == btn1) { // ボタン 1 クリックなら txt2.settext(txt1.gettext()); // コピーする else { // ボタン 2 クリックなら txt1.settext(""); txt2.settext(""); // クリアする
Swing による HTML の表示 スクロール Pane の表示 JScrollPane クラス JScrollPane( 部品オブジェクト ); HTML 表示 Pane の表示 JEditorPane クラス JEditorPane html = new JEditorPane(); JEditorPane クラスのオブジェクト html を生成する URL の指定 JEditorPane クラスの setpage メソッドを使う html.setpage( http://www.iis.it-hiroshima.ac.jp/ );
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HTMLView extends JFrame implements ActionListener { JEditorPane html = new JEditorPane(); JTextField addr = new JTextField("http://"); public static void main(string args[]) { (new HTMLView()).setVisible(true); public HTMLView() { addwindowlistener(new WindowAdapter() { // 閉じる処理 public void windowclosed(windowevent e) { System.exit(0); ); addr.addactionlistener(this); // テキストフィールドのリスナ登録 html.seteditable(false); add(addr, BorderLayout.NORTH); add(new JScrollPane(html), BorderLayout.SOUTH); setsize(400, 300); settitle("htmlview"); public void actionperformed(actionevent e) { try { html.setpage(addr.gettext()); catch (Exception err) {
期末試験案内 期末試験 日時平成 19 年 7 月 20 日 13:10~ 場所新 4-411 教室 試験内容 Java ウインドウアプリケーション作成 成績評価 出席 (8 回以上無い場合は減点 ) レポート 期末試験結果
補講案内 日時平成 19 年 7 月 26 日 ( 木 ) 10:40~ 場所 新 4-411 教室 対象者レポート未提出者,Javaプログラミングで質問のあるもの 注 : 特に質問の無い学生, レポートを全て提出している学生は出席を要しない