使用JRadioButtonMenuItem组件

来源:互联网 发布:淘宝客服介入退款规则 编辑:程序博客网 时间:2024/06/08 01:08

使用JRadioButtonMenuItem组件:
JRadioButtonMenuItem的类层次结构图:
 java.lang.Object
   --java.awt.Component
    --java.awt.Container
      --javax.swing.JComponent
       --javax.swing.AbstractButton
        --javax.swing.JMenuItem
         --javax.swing.JRadioButtonMenuItem与JCheckBoxMenuItem相同,JRadioButtonItem也是继承JMenuItem,因此JRadioButtonMenuItem也具备JMenuItem的许多特性.而
JRadioButtonMenuItem和JCheckBoxMenuItem一样也是一种特殊的JMenuItem.我们在前面也介绍过JRadioButton组件,而
JRadioButtonMenuItem是专用在MenuItem上.我们来看看JRadioButtonMenuItem的构造方法,如下表:
JRadioButtonMenuItem的构造函数:
  JRadioButtonMenuItem():建立一个新的JRadioButtonMenuItem.
  JRadioButtonMenuItem(Action a):建立一个支持Action的新的JRadioButtonMenuItem.
  JRadioButtonMenuItem(Icon icon):建立一个有图标的JRadioButtonMenuItem.
  JRadioButtonMenuItem(Icon icon,Boolean
  selected):建立一个有图标和设置选择状态的JRadioButtonMenuItem.
  JRadioButtonMenuItem(String text):建立一个有文字的JRadioButtonMenuItem.
  JRadioButtonMenuItem(String text,Boolean
  selected):建立一个有文字和设置选择状态的JRadioButtonMenuItem.
  JRadioButtonMenuItem(String text,Icon icon):建立一个有文字和图标的JRadioButtonMenuItem.
  JRadioButtonMenuItem(String text,Icon icon,Boolean
  selected):建立一个有文字,图标和设置状态的JRadioButtonMenuItem.
12-5-1:构造JRadioButtonMenuItem组件:
由一表可以看出JRadioButtonMenuItem的构造方式与JCheckBoxMenuItem构造方式几乎相同,而且和JCheckBoxMenuItem的构造方
式一样都是比JMenuItem的构造方式多了设置选择状况的构造方式,设置选择状态就是决定是否要将构造好的JRadioButtonMenuItem
设置为默认值.我们来看下面这个范例:
import javax.swing.*;
import java.awt.event.*;

public class JRadioButtonMenuItem1 extends JFrame implements ActionListener {

 JTextArea theArea = null;

 public JRadioButtonMenuItem1() {

  super("JRadioButtonMenuItem1");
  theArea = new JTextArea();
  theArea.setEditable(false);
  getContentPane().add(new JScrollPane(theArea));
  JMenuBar MBar = new JMenuBar();
  MBar.setOpaque(true);

  JMenu mfile = buildFileMenu();
  JMenu mstyle = buildStyleMenu();

  MBar.add(mfile);
  MBar.add(mstyle);
  setJMenuBar(MBar);
 }// end of JRadioButtonMenuItem1()

 public JMenu buildFileMenu() {

  JMenu thefile = new JMenu("File");
  thefile.setMnemonic('F');

  JMenuItem newf = new JMenuItem("New", new ImageIcon("icons/new24.gif"));
  JMenuItem open = new JMenuItem("Open",
    new ImageIcon("icons/open24.gif"));
  JMenuItem close = new JMenuItem("Close", new ImageIcon(
    "icons/close24.gif"));
  JMenuItem quit = new JMenuItem("Exit",
    new ImageIcon("icons/exit24.gif"));

  newf.setMnemonic('N');
  open.setMnemonic('O');
  close.setMnemonic('L');
  quit.setMnemonic('X');

  newf.setAccelerator(KeyStroke.getKeyStroke('N',
    java.awt.Event.CTRL_MASK, false));
  open.setAccelerator(KeyStroke.getKeyStroke('O',
    java.awt.Event.CTRL_MASK, false));
  close.setAccelerator(KeyStroke.getKeyStroke('L',
    java.awt.Event.CTRL_MASK, false));
  quit.setAccelerator(KeyStroke.getKeyStroke('X',
    java.awt.Event.CTRL_MASK, false));

  newf.addActionListener(this);
  open.addActionListener(this);
  close.addActionListener(this);
  quit.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    System.exit(0);
   }
  });

  thefile.add(newf);
  thefile.add(open);
  thefile.add(close);
  thefile.addSeparator();
  thefile.add(quit);

  return thefile;
 }// end of buildFileMenu()

 public JMenu buildStyleMenu() {

  JMenu style = new JMenu("Style");
  style.setMnemonic('S');

  JRadioButtonMenuItem Left = new JRadioButtonMenuItem("Left",
    new ImageIcon("icons/left24.gif"));
  JRadioButtonMenuItem Center = new JRadioButtonMenuItem("Center",
    new ImageIcon("icons/center24.gif"));
  JRadioButtonMenuItem Right = new JRadioButtonMenuItem("Right",
    new ImageIcon("icons/right24.gif"));
  JRadioButtonMenuItem Justify = new JRadioButtonMenuItem("Justify",
    new ImageIcon("icons/justify24.gif"));

  Left.setMnemonic('L');
  Center.setMnemonic('E');
  Right.setMnemonic('R');
  Justify.setMnemonic('J');

  Left.setAccelerator(KeyStroke.getKeyStroke('L',
    java.awt.Event.SHIFT_MASK, false));
  Center.setAccelerator(KeyStroke.getKeyStroke('E',
    java.awt.Event.SHIFT_MASK, false));
  Right.setAccelerator(KeyStroke.getKeyStroke('R',
    java.awt.Event.SHIFT_MASK, false));
  Justify.setAccelerator(KeyStroke.getKeyStroke('J',
    java.awt.Event.SHIFT_MASK, false));

  Left.addActionListener(this);
  Center.addActionListener(this);
  Right.addActionListener(this);
  Justify.addActionListener(this);

  style.add(Left);
  style.add(Center);
  style.add(Right);
  style.add(Justify);

  return style;
 }// end of buildStyleMenu()

 public void actionPerformed(ActionEvent ae) {
  try {
   theArea.append("* action '" + ae.getActionCommand()
     + "' performed. */n");
  } catch (Exception e) {
   System.out.println("actionPerformed Exception:" + e);
  }
 }

 public static void main(String[] args) {

  JFrame F = new JRadioButtonMenuItem1();
  F.setSize(400, 200);
  F.addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    System.exit(0);
   }
  });// end of addWindowListener
  F.setVisible(true);
 } // end of main
}// end of class JRadioButtonMenuItem1在这个范例中我们遇到了与JRadioButton同样的问题,那就是选项的单、复选的问题.一般来说RadioButton组件是用来做单选
的情况时使用,而CheckBox则是多为复选情况时使用.那么我们该怎么来解决这个问题呢?还记得我们介绍JRadioButton时的解决方式
吗?没错,就是要利用ButtonGroup类来处理.我们在JRadioButtonMenuItem1.java的buildStyleMenu()方法中加下下列五行:

      ButtonGroup bg=new ButtonGroup();
         bg.add(Left);
         bg.add(Center);
         bg.add(Right);
         bg.add(Justify);       运行程序我们可看到加入ButtonGroup后的JRadioButtonMenuItem变成只能被单选的菜单.

原创粉丝点击