ホームページ  >  記事  >  Java  >  Java を使用したグラフィカル メニューの作成に関するチュートリアル

Java を使用したグラフィカル メニューの作成に関するチュートリアル

高洛峰
高洛峰オリジナル
2017-01-17 11:34:291298ブラウズ

メニューには、ドロップダウン メニューとポップアップ メニューの 2 種類があります。この章では、ドロップダウン メニューのプログラミング方法についてのみ説明します。メニューは、インターフェイスに常に表示されるという点で、JComboBox や JCheckBox とは異なります。このメニューは、一度に 1 つの項目のみを選択できるという点で JComboBox に似ています。

ドロップダウン メニューまたはポップアップ メニューでオプションを選択すると、ActionEvent イベントが生成されます。イベントはそのオプションのモニターに送信され、イベントの意味がモニターによって解釈されます。
メニュー バー、メニュー、およびメニュー項目

ドロップダウン メニューは、メニュー バーに表示される名前によって視覚的に表されます。メニュー バー (JMenuBar) は、通常、JFrame の上部に表示されます。複数のドロップダウン メニュー。ドロップダウン メニューをアクティブにするには 2 つの方法があります。 1 つは、マウス ボタンを押したままにし、マウスを放して選択を完了するまでマウスを移動することです。もう 1 つの方法は、カーソルがメニュー バーのメニュー名の上にあるときにマウスをクリックすることです。この場合、メニューが展開され、メニュー項目が強調表示されます。

メニュー バーには複数のメニュー (JMenu) を含めることができ、各メニューには多数のメニュー項目 (JMenuItem) を含めることができます。例えば、Eclipse環境のメニューバーには、File、Edit、Source、Refactorなどのメニューがあり、それぞれのメニューには多数のメニュー項目があります。たとえば、[ファイル] メニューには、[新規作成]、[ファイルを開く]、[閉じる]、[すべて閉じる] などのメニュー項目があります。

ウィンドウにメニューを追加する方法は、まずメニュー バー オブジェクトを作成し、次にいくつかのメニュー オブジェクトを作成し、これらのメニュー オブジェクトをメニュー バーに配置し、必要に応じて各メニュー オブジェクトにメニュー項目を追加します。
メニュー内のメニュー項目を完全なメニューにすることもできます。メニュー項目は別の完全なメニューになる可能性があるため、階層的なメニュー構造を構築できます。

1. メニュー バー
クラス JMenuBar のインスタンスはメニュー バーです。たとえば、次のコードはメニュー バー オブジェクト menubar を作成します。

JMenuBar menubar = new JMenuBar();

メニュー バーをウィンドウに追加するには、JFrame クラスの setJMenuBar() メソッドを使用する必要があります。たとえば、コード:

setJMenuBar(menubar);

クラス JMenuBar の一般的なメソッドは次のとおりです:

add(JMenu m): メニュー m をメニュー バーに追加します。

countJMenus(): メニューバーのメニュー項目の数を取得します。

getJMenu(int p): メニューバーのメニューを取得します。

remove(JMenu m): メニューバーのメニュー m を削除します。

2. メニュー
JMenu クラスによって作成されるオブジェクトがメニューです。 JMenu クラスの一般的に使用されるメソッドは次のとおりです:

JMenu(): 空のタイトルを持つメニューを作成します。

JMenu(String s): s というタイトルのメニューを作成します。

add(JMenuItem item): パラメーター item で指定されたメニュー オプションをメニューに追加します。

add(JMenu menu): パラメータメニューで指定されたメニューをメニューに追加します。メニューに埋め込みサブメニューを実装します。

addSeparator(): メニューオプションの間に区切り線を描きます。

getItem(int n): 指定されたインデックスにあるメニュー項目を取得します。

getItemCount(): メニュー項目の数を取得します。

insert(JMenuItem item, int n): メニュー位置 n にメニュー項目を挿入します。

remove(int n): メニュー位置 n にあるメニュー項目を削除します。

removeAll(): メニューのすべてのメニュー項目を削除します。

3. メニュー項目
JMenuItem クラスのインスタンスはメニュー項目です。クラス JMenuItem の一般的なメソッドは次のとおりです:

JMenuItem(): 無題のメニュー項目を構築します。

JMenuItem(String s): タイトル付きのメニュー項目を構築します。

setEnabled(boolean b): 現在の単一項目を選択できるかどうかを設定します。

isEnabled(): 現在のメニュー項目がユーザーによって選択可能かどうかを返します。

getLabel(): メニュー項目の名前を取得します。

setLabel(): メニューオプションの名前を設定します。

addActionListener(ActionListener e): メニュー項目のモニターを設定します。モニターは、メニューがクリックされたときにアクション イベントを受け取ります。

4. メニュー イベントの処理
メニューのイベント ソースは、マウスでメニュー項目をクリックすることです。このイベントを処理するインターフェースはActionListener、実装するインターフェースメソッドはactionPerformed(ActionEvent e)、イベントソースを取得するメソッドはgetSource()です。

【例】ウィンドウにはメニューバーがあります。ボタンが開いているウィンドウの状態では、ボタンをクリックするとウィンドウが開き、2 つのメニューがあり、各メニューには 3 つのメニュー項目があります。メニュー項目が選択されると、メニュー項目監視メソッドは、対応するメニュー項目が選択されたことをテキスト ボックスに表示します。

import java.applet.*
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MenuWindow extends JFrame implements ActionListener{
  public static JtextField text;
  private void addItem(JMenu Menu,String menuName,ActionListener listener){
    JMenuItem anItem = new JMenuItem(menuName);
    anItem.setActionCommand(menuName);
    anItem.addActionListener(listener);
    Menu.add(anItem);
  }
  public MenuWindow(String s,int w,int h){
    setTitle(s);
    Container con = this.getContentPane();
    con.setLayout(new BorderLayout());
    this.setLocation(100,100);
    this.setSize(w,h);
    JMenu menu1 = new JMenu("体育");
    addItem(menu1," 跑步",this);
    addItem(menu1," 跳绳",this);
    addItem(menu1,"打球",this);
    JMenu menu2 = JMenu("娱乐");
    addItem(menu2,"唱歌",this);
    addItem(menu2,"跳舞",this);
    addItem(menu2,"游戏",this);
    JMenuBar menubar = new JMenuBar();
    text = new JTextField();
    menubar.add(menu1);
    menubar.add(menu2);
    setJMenuBar(MenuBar);
    con.add(text,BorderLayout.NORTH);
  }
  public void actionPerformed(ActionEvent e){
    text.setText(e.getActionCommand()+"菜单项被选中!");
  }
}
public class Example6_5 extends Applet implements ActionListener{
  MenuWindow window;
  JButton button;
  boolean bflg;
  public void init(){
    button = new JButton("打开我的体育娱乐之窗");bflg =true;
    window = new MenuWindow("体育娱乐之窗",100,100);
    button.addActionListener(this);
    add(button);
  }
  public void actionPerformed(ActionEvent e){
    if(e.getSource()==button){
      if(bflg){
        window.setVisible(true);
        bflg = false;
        button.setLabel("关闭我的体育娱乐之窗");
      }
      else{
        window.setVisible(false);
        bflg = true;
        button.setLabel("打开我的体育娱乐之窗");
      }
    }
  }
}



5. Embed submenu
はメニューを作成し、複数のメニュー項目を作成します。そのうちの 1 つはメニュー (他のメニュー項目を含む) であり、メニューのネストを構成します。たとえば、上記のプログラムの関連コードを次のように変更します。

Menu menu1,menu2,item4;
MenuItem item3,item5,item6,item41,item42;

次のコードを挿入して item41 および item42 メニュー項目を作成し、それらを item4 メニューに追加します。

item41= new MenuItem(“东方红”);
item42 = new MenuItem(“牡丹”);
item4.add(item41);
item4.add(item42);

item4 メニューをクリックすると、さらに 2 つメニュー項目が開き、選択できます。

6. メニューに終了項目を追加します。 新しいメニュー項目を追加し、メニュー項目がクリックされたときに Java 実行環境を終了するには、対応する監視メソッドの System.exit() メソッドを使用します。 。たとえば、次の回路図コード:

…
 
item7 = new MenuItem(“退出”);
item7.addActionListener(this);
…
public void actionPerformed(ActionEvent e){
if(e.getSource()==item7){
System.exit(0);
}
}

7.设置菜单项的快捷键
用MenuShortcut类为菜单项设置快捷键。构造方法是MenuShortcut(int key)。其中key可以取值KeyEvent.VK_A至KenEvent.VK_Z,也可以取 ‘a'到 ‘z'键码值。菜单项使用setShortcut(MenuShortcut k)方法来设置快捷键。例如,以下代码设置字母e为快捷键。

class Herwindow extends Frame implements ActionListener{
  MenuBar menbar;
  Menu menu;
  MenuItem item;
  MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E);
  …
  item.setShortcut(shortcut);
  …
}


选择框菜单项

菜单也可以包含具有持久的选择状态的选项,这种特殊的菜单可由JCheckBoxMenuItem类来定义。JCheckBoxMenuItem对象像选择框一样,能表示一个选项被选中与否,也可以作为一个菜单项加到下拉菜单中。点击JCheckBoxMenuItem菜单时,就会在它的左边出现打勾符号或清除打勾符号。例如,在例6.5程序的类MenuWindow中,将代码

addItem(menu1,“跑步”,this);addItem(menu1,”跳绳”,this);

改写成以下代码,就将两个普通菜单项“跑步“和“跳绳”改成两个选择框菜单项:

JCheckBoxMenuItem item1 = new JCheckBoxMenuItem(“跑步”);
JCheckBoxMenuItem item2 = new JCheckBoxMenuItem(“跳绳”);
item1.setActionCommand(“跑步”);
item1.addActionListener(this);
menu1.add(item1);
item2.setActionCommand(“跳绳”);
item2.addActionListener(this);
menu1.add(item2);


更多使用Java编写图形化的菜单的教程相关文章请关注PHP中文网!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。