实验5
Windows图形程序设计
一、 实验目的:
1、 学习使用框架、面板、和简单用户界面UI组件。
2、 学习使用布局管理器。
3、 学习使用JavaBean组件创建图形用户界面应用程序。
4、 理解和学习Windows事件驱动程序。
5、 熟悉Java事件委托模式:事件的注册、监听和处理。
6、 学习掌握掌握对象数组深复制的方法。
二、 实验任务:
1、 使用Java SDK创建一个Windows图形界面应用程序。
2、 实现一个能做算术运算的用户界面。界面包括标签和文本域Number1Number2ResultResult文本域用于显示Number1 Number2的算术运算的结果。程序使用四个按钮,它们分别标有AddSubtractMultiplyDivide。程序也创建了完成相同功能运算的菜单。
三、 实验步骤:
1、 首先设置环境变量,保证在任何目录下都可以使用Java SDK编程工具。如果Java SDK的安装目录为C:\j2sdk1.4.2_09,则在命令提示符状态(从附件中进入)下键入如下命令行设置环境变量: path C:\j2sdk1.4.2_09\bin
2、 使用Windows写字板编辑应用程序,源代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame implements ActionListener
{
  // Text fields for Number 1, Number 2, and Result
  private JTextField jtfNum1, jtfNum2, jtfResult;
  // Buttons "Add", "Subtract", "Multiply" and "Divide"
  private JButton jbtAdd, jbtSub, jbtMul, jbtDiv;
  // Menu items "Add", "Subtract", "Multiply","Divide" and "Close"
  private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose;
  // Main Method
  public static void main(String[] args)
  {
    MenuDemo frame = new MenuDemo();
    // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
  // Default Constructor
  public MenuDemo()
  {
    setTitle("Menu Demo");
    // Create menu bar
    JMenuBar jmb = new JMenuBar();
    // Set menu bar to the frame
    setJMenuBar(jmb);
    // Add menu "Operation" to menu bar
    JMenu operationMenu = new JMenu("Operation");
    operationMenu.setMnemonic('O');
    jmb.add(operationMenu);
java设置环境变量的方法代码    // Add menu "Exit" in menu bar
    JMenu exitMenu = new JMenu("Exit");
    exitMenu.setMnemonic('E');
    jmb.add(exitMenu);
    // Add menu items with mnemonics to menu "Operation"
    operationMenu.add(jmiAdd= new JMenuItem("Add", 'A'));
    operationMenu.add(jmiSub = new JMenuItem("Subtract", 'S'));
    operationMenu.add(jmiMul = new JMenuItem("Multiply", 'M'));
    operationMenu.add(jmiDiv = new JMenuItem("Divide", 'D'));
    exitMenu.add(jmiClose = new JMenuItem("Close", 'C'));
    // Set keyboard accelerators
    jmiAdd.setAccelerator(
      KeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
    jmiSub.setAccelerator(
      KeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
    jmiMul.setAccelerator(
      KeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK));
    jmiDiv.setAccelerator(
      KeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
    // Panel p1 to hold text fields and labels
    JPanel p1 = new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(new JLabel("Number 1"));
    p1.add(jtfNum1 = new JTextField(3));
    p1.add(new JLabel("Number 2"));
    p1.add(jtfNum2 = new JTextField(3));
    p1.add(new JLabel("Result"));
    p1.add(jtfResult = new JTextField(4));
    jtfResult.setEditable(false);
    // Panel p2 to hold buttons
    JPanel p2 = new JPanel();
    p2.setLayout(new FlowLayout());
    p2.add(jbtAdd = new JButton("Add"));
    p2.add(jbtSub = new JButton("Subtract"));
    p2.add(jbtMul = new JButton("Multiply"));
    p2.add(jbtDiv = new JButton("Divide"));
    // Add panels to the frame
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1, BorderLayout.CENTER);
    getContentPane().add(p2, BorderLayout.SOUTH);
    // Register listeners
    jbtAdd.addActionListener(this);
    jbtSub.addActionListener(this);
    jbtMul.addActionListener(this);
    jbtDiv.addActionListener(this);
    jmiAdd.addActionListener(this);
    jmiSub.addActionListener(this);
    jmiMul.addActionListener(this);
    jmiDiv.addActionListener(this);
    jmiClose.addActionListener(this);
  }
  // Handle ActionEvent from buttons and menu items
  public void actionPerformed(ActionEvent e)
  {
    String actionCommand = e.getActionCommand();
    // Handle button events
    if (e.getSource() instanceof JButton)
    {
      if ("Add".equals(actionCommand))
        calculate('+');
      else if ("Subtract".equals(actionCommand))
        calculate('-');
      else if ("Multiply".equals(actionCommand))
        calculate('*');
      else if ("Divide".equals(actionCommand))
        calculate('/');
    }
    else if (e.getSource() instanceof JMenuItem)
    {
      // Handle menu item events

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。