demoframe.java

来自「一个一元曲线多项式数值演示例子」· Java 代码 · 共 91 行

JAVA
91
字号
package numbercruncher.graphutils;

import java.awt.*;
import java.awt.event.*;

/**
 * The base frame for all standalone demo programs.
 */
public abstract class DemoFrame
    extends Frame {
  private String title; // window title
  private DemoPanel demoPanel; // demo panel

  /**
   * Constructor.
   * @param title the window title
   * @param demoPanel the demo panel
   */
  protected DemoFrame(String title, DemoPanel demoPanel) {
    this(title, demoPanel, 600, 500);
  }

  /**
   * Constructor.
   * @param title the window title
   * @param demoPanel the demo panel
   * @param width the frame width
   * @param height the frame height
   */
  protected DemoFrame(String title, DemoPanel demoPanel,
                      int width, int height) {
    this.title = title;
    this.demoPanel = demoPanel;
    setTitle(title);
    initFrame(width, height);
  }

  /**
   * Initialize the frame.
   * @param width the frame width
   * @param height the frame height
   */
  private void initFrame(int width, int height) {
    // Center the demo frame.
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setSize(width, height);
    setLocation( (screenSize.width - width) / 2,
                (screenSize.height - height) / 2);

    // Add the demo panel.
    setLayout(new BorderLayout());
    add( (Panel) demoPanel, BorderLayout.CENTER);

    // Initialize the demo.
    demoPanel.initializeDemo();

    // Window event handlers.
    addWindowListener(new WindowAdapter() {
      public void windowOpened(WindowEvent ev) {
        repaint();
      }

      public void windowClosing(WindowEvent ev) {
        System.exit(0);
      }
    });

    // Resize event handler.
    addComponentListener(new ComponentAdapter() {
      public void componentResized(ComponentEvent ev) {
        resized();
      }
    });
  }

  /**
   * The frame was resized.
   */
  private void resized() {
    demoPanel.panelResized();
  }

  /**
   * Update the display without repainting the background.
   * @param g the graphics context
   */
  public void update(Graphics g) {
    demoPanel.draw();
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?