⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame.java

📁 代码实现了计算机图形学中画线算法(包括DDA,中点法,Bresenham)以及画圆算法(包括中点法,Bresenham)以及多边形的填充(包括边填充,种子填充,扫描填充)多边形的二维变换,多边形的裁减
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package graphics0;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.awt.image.*;

/**
 * <p>Title: computer graphics </p>
 * <p>Description: homeworks</p>
 * <p>Copyright: Copyright (c) 2004 </p>
 * <p>Company: shu</p>
 * @author dxf
 * @version 1.0
 */

public class Frame extends JFrame {
  JPanel contentPane;
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenuFile = new JMenu();
  JMenu jMenuHelp = new JMenu();
  JMenuItem jMenuHelpAbout = new JMenuItem();
  JToolBar jToolBar = new JToolBar();
  JButton jBtnClear = new JButton();
  ImageIcon image1;
  ImageIcon image2;
  ImageIcon image3;
  JLabel statusBar = new JLabel();
  BorderLayout borderLayout1 = new BorderLayout();
  JColorChooser jColorChooser1 = new JColorChooser();
  JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  BorderLayout borderLayout2 = new BorderLayout();
  BorderLayout borderLayout3 = new BorderLayout();
  ButtonGroup rbtnGL = new ButtonGroup();
  JPanel jPanel4 = new JPanel();
  BorderLayout borderLayout5 = new BorderLayout();
  JPanel jPanel5 = new JPanel();
  JPanel jPanel6 = new JPanel();
  JPanel jPanel7 = new JPanel();
  GridBagLayout gridBagLayout1 = new GridBagLayout();
  JLabel jLabel4 = new JLabel();
  JTextField jTextFieldLWidth = new JTextField();
  DrawPanel jPanelD = new DrawPanel(this);

  ButtonGroup rbtnGLCE = new ButtonGroup();
  GridLayout gridLayout1 = new GridLayout();
  FlowLayout flowLayout1 = new FlowLayout();
  JButton jBtnHelp = new JButton();
  JComboBox jComboBoxL = new JComboBox();
  JLabel jLabel7 = new JLabel();
  ButtonGroup rbtnGFill = new ButtonGroup();
  JRadioButton jRBtnFill = new JRadioButton();
  JRadioButton jRBtnUnFill = new JRadioButton();
  JMenu jMenuL = new JMenu();
  JMenu jMenu2 = new JMenu();
  JCheckBoxMenuItem jCheckBoxMenuItemDemo = new JCheckBoxMenuItem();
  JRadioButtonMenuItem jRBtnMenuItemLM = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtnMenuItemE = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtnMenuItemLB = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtnMenuItemLD = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtnMenuItemC = new JRadioButtonMenuItem();
  JButton jBtnBkColor = new JButton();
  JLabel jLabel6 = new JLabel();
  JButton jBtnForeColor = new JButton();
  JLabel jLabel5 = new JLabel();
  JMenu jMenuFill = new JMenu();
  JRadioButtonMenuItem jRBtnMenuItemP = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtMenuItemFS4 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtMenuItemF4 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRBtMenuItemF8 = new JRadioButtonMenuItem();
  ButtonGroup rbtnGFillMethod = new ButtonGroup();
  JRadioButtonMenuItem jRBtMenuItemFP = new JRadioButtonMenuItem();
  ButtonGroup rbtnGCut = new ButtonGroup();
  BorderLayout borderLayout4 = new BorderLayout();
  JPanel jPanel3 = new JPanel();
  BorderLayout borderLayout6 = new BorderLayout();
  JPanel jPanel8 = new JPanel();
  JPanel jPanel9 = new JPanel();
  JLabel jLabel2 = new JLabel();
  JTextField jTFTH = new JTextField();
  BorderLayout borderLayout8 = new BorderLayout();
  JButton jBtnScale = new JButton();
  JPanel jPanel11 = new JPanel();
  JLabel jLabel3 = new JLabel();
  JTextField jTFTY = new JTextField();
  BorderLayout borderLayout9 = new BorderLayout();
  JButton jBtnTranslate = new JButton();
  JPanel jPanel12 = new JPanel();
  JLabel jLabel8 = new JLabel();
  JTextField jTFTX = new JTextField();
  BorderLayout borderLayout10 = new BorderLayout();
  JPanel jPanel13 = new JPanel();
  BorderLayout borderLayout11 = new BorderLayout();
  JPanel jPanel14 = new JPanel();
  JPanel jPanel15 = new JPanel();
  JPanel jPanel10 = new JPanel();
  JLabel jLabel1 = new JLabel();
  JTextField jTFTW = new JTextField();
  BorderLayout borderLayout7 = new BorderLayout();
  BorderLayout borderLayout12 = new BorderLayout();
  JPanel jPanel17 = new JPanel();
  JLabel jLabel9 = new JLabel();
  JTextField jTFTheta = new JTextField();
  BorderLayout borderLayout14 = new BorderLayout();
  JButton jBtnRotate = new JButton();
  JPanel jPanel20 = new JPanel();
  JPanel jPanel21 = new JPanel();
  JPanel jPanel22 = new JPanel();
  BorderLayout borderLayout17 = new BorderLayout();
  BorderLayout borderLayout18 = new BorderLayout();
  BorderLayout borderLayout19 = new BorderLayout();
  JPanel jPanel23 = new JPanel();
  BorderLayout borderLayout20 = new BorderLayout();
  JPanel jPanel16 = new JPanel();
  GridBagLayout gridBagLayout2 = new GridBagLayout();
  JLabel jLabel12 = new JLabel();
  JLabel jLabel13 = new JLabel();
  JTextField jTFCX = new JTextField();
  JTextField jTFCY = new JTextField();
  JToggleButton jToggleButton1 = new JToggleButton();
  JToggleButton jTBtnCentre = new JToggleButton();
  //Construct the frame
  public Frame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    image1 = new ImageIcon(graphics0.Frame.class.getResource("openFile.png"));
    image2 = new ImageIcon(graphics0.Frame.class.getResource("closeFile.png"));
    image3 = new ImageIcon(graphics0.Frame.class.getResource("help.png"));
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setFont(new java.awt.Font("Dialog", 0, 14));
    this.setSize(new Dimension(437, 500));
    this.setTitle("2D");
    statusBar.setBackground(SystemColor.desktop);
    statusBar.setText(" ");
    jMenuFile.setText("homework");
    jMenuHelp.setText("Help");
    jMenuHelpAbout.setText("About");
    jMenuHelpAbout.addActionListener(new Frame_jMenuHelpAbout_ActionAdapter(this));
    jBtnClear.setText("Clear");
    jBtnClear.addActionListener(new Frame_jBtnClear_actionAdapter(this));
    jBtnClear.setToolTipText("Clear");
    jBtnClear.setVerifyInputWhenFocusTarget(true);
    jBtnClear.setIcon(null);
    image1.setDescription("vfs:///file:///E:/My Documents/jbproject/graphics0/classes/graphics0/openFile.png");
    contentPane.setBackground(SystemColor.text);
    contentPane.setFont(new java.awt.Font("Dialog", 0, 12));
    jPanel1.setLayout(borderLayout2);
    jPanel2.setBackground(Color.pink);
    jPanel2.setRequestFocusEnabled(true);
    jPanel2.setLayout(borderLayout3);
    jPanel4.setLayout(borderLayout5);
    jPanel6.setBackground(Color.pink);
    jPanel6.setLayout(borderLayout4);
    jPanel5.setBackground(Color.green);
    jPanel5.setLayout(gridLayout1);
    jPanel7.setBackground(Color.pink);
    jPanel7.setBorder(BorderFactory.createLoweredBevelBorder());
    jPanel7.setDebugGraphicsOptions(0);
    jPanel7.setLayout(gridBagLayout1);
    jLabel4.setText("线宽");
    jTextFieldLWidth.setText("1");
    jTextFieldLWidth.addFocusListener(new Frame_jTextFieldLWidth_focusAdapter(this));

    gridLayout1.setColumns(2);
    gridLayout1.setRows(2);
    jBtnHelp.setToolTipText("Help");
    jBtnHelp.setIcon(image3);
    jBtnHelp.addActionListener(new Frame_jBtnHelp_actionAdapter(this));
    jLabel7.setText("线型");
    jRBtnFill.setSelected(false);
    jRBtnFill.setText("填充");
    jRBtnUnFill.setSelected(true);
    jRBtnUnFill.setText("不填充");
    jMenu2.setText("Option");
    jCheckBoxMenuItemDemo.setText("Demo");
    jCheckBoxMenuItemDemo.addActionListener(new Frame_jCheckBoxMenuItemDemo_actionAdapter(this));
    jMenuL.setText("Line");
    jRBtnMenuItemLM.setText("MidPoint");
    jRBtnMenuItemLM.addActionListener(new Frame_jRBtnMenuItemLM_actionAdapter(this));
    jRBtnMenuItemE.setText("Ellipse");
    jRBtnMenuItemE.addActionListener(new Frame_jRBtnMenuItemE_actionAdapter(this));
    jRBtnMenuItemLB.setText("Bresenham");
    jRBtnMenuItemLB.addActionListener(new Frame_jRBtnMenuItemLB_actionAdapter(this));
    jRBtnMenuItemLD.setToolTipText("");
    jRBtnMenuItemLD.addActionListener(new Frame_jRBtnMenuItemLD_actionAdapter(this));
    jRBtnMenuItemLD.setArmed(false);
    jRBtnMenuItemLD.setSelected(false);
    jRBtnMenuItemLD.setText("DDA");
    jRBtnMenuItemC.setArmed(false);
    jRBtnMenuItemC.setSelected(false);
    jRBtnMenuItemC.setText("Circle");
    jRBtnMenuItemC.setToolTipText("");
    jRBtnMenuItemC.addActionListener(new Frame_jRBtnMenuItemC_actionAdapter(this));
    jBtnBkColor.setText("选择");
    jBtnBkColor.addActionListener(new Frame_jBtnBkColor_actionAdapter(this));
    jLabel6.setText("背景色");
    jBtnForeColor.setText("选择");
    jBtnForeColor.addActionListener(new Frame_jBtnForeColor_actionAdapter(this));
    jLabel5.setText("前景色");
    jMenuFill.setText("Fill");
    jRBtnMenuItemP.setText("Ploygon");
    jRBtnMenuItemP.setToolTipText("");
    jRBtnMenuItemP.addActionListener(new Frame_jRBtnMenuItemP_actionAdapter(this));
    jRBtMenuItemFS4.setText("ScanLineFill4");
    jRBtMenuItemFS4.setToolTipText("");
    jRBtMenuItemFS4.addActionListener(new Frame_jRBtMenuItemFS4_actionAdapter(this));
    jRBtMenuItemF4.setText("FloodFill4");
    jRBtMenuItemF4.addActionListener(new Frame_jRBtMenuItemF4_actionAdapter(this));
    jRBtMenuItemF8.setText("FloodFill8");
    jRBtMenuItemF8.addActionListener(new Frame_jRBtMenuItemF8_actionAdapter(this));
    jRBtMenuItemFP.setText("PolyFill");
    jRBtMenuItemFP.addActionListener(new Frame_jRBtMenuItemFP_actionAdapter(this));
    jPanel3.setLayout(borderLayout6);
    jLabel2.setText("Height");
    jPanel8.setLayout(borderLayout8);
    jTFTH.setText("");
    jBtnScale.setText("缩放");
    jBtnScale.addActionListener(new Frame_jBtnScale_actionAdapter(this));
    jPanel11.setLayout(borderLayout10);
    jLabel3.setPreferredSize(new Dimension(17, 16));
    jLabel3.setText("Y= ");
    jTFTY.setText("");
    jBtnTranslate.setText("平移");
    jBtnTranslate.addActionListener(new Frame_jBtnTranslate_actionAdapter(this));
    jPanel12.setLayout(borderLayout9);
    jLabel8.setText("X= ");
    jTFTX.setText("");
    jPanel14.setLayout(borderLayout11);
    jLabel1.setText("width ");
    jPanel15.setLayout(borderLayout7);
    jTFTW.setText("");
    jPanel10.setLayout(borderLayout12);
    jLabel9.setText("角度");
    jTFTheta.setSelectionStart(11);
    jTFTheta.setText("1");
    jPanel17.setLayout(borderLayout14);
    jBtnRotate.setText("旋转");
    jBtnRotate.addActionListener(new Frame_jBtnRotate_actionAdapter(this));
    jPanel20.setLayout(borderLayout17);
    jPanel22.setLayout(borderLayout18);
    jPanel21.setLayout(borderLayout19);
    jPanel23.setLayout(borderLayout20);
    jPanel16.setLayout(gridBagLayout2);
    jLabel12.setText("X=");
    jLabel13.setText("Y=");
    jTFCX.setText("0");
    jTFCX.addActionListener(new Frame_jTFCX_actionAdapter(this));
    jTFCY.setText("0");
    jTBtnCentre.setText("定义旋转中心");
    jTBtnCentre.setText("定义旋转中心");
    jToolBar.add(jBtnHelp, null);
    jToolBar.add(jBtnClear);
    contentPane.add(statusBar, BorderLayout.SOUTH);

    jMenuFile.add(jRBtnMenuItemC);
    jMenuFile.add(jRBtnMenuItemE);
    jMenuFile.add(jRBtnMenuItemP);
    jMenuFile.add(jMenuL);
    jMenuHelp.add(jMenuHelpAbout);
    jMenuBar1.add(jMenuFile);
    jMenuBar1.add(jMenuHelp);
    jMenuBar1.add(jMenu2);
    jMenuBar1.add(jMenuFill);

    this.setJMenuBar(jMenuBar1);
    contentPane.add(jToolBar, BorderLayout.NORTH);
    contentPane.add(jPanel1,  BorderLayout.CENTER);
    jPanel1.add(jPanel2,  BorderLayout.EAST);
    jPanel2.add(jPanel4, BorderLayout.CENTER);
    jPanel4.add(jPanel5,  BorderLayout.SOUTH);
    jPanel4.add(jPanel6, BorderLayout.CENTER);
    jPanel6.add(jPanel3,  BorderLayout.NORTH);
    jPanel3.add(jPanel8, BorderLayout.CENTER);
    jPanel8.add(jTFTH, BorderLayout.CENTER);
    jPanel8.add(jLabel2, BorderLayout.WEST);
    jPanel3.add(jPanel9, BorderLayout.SOUTH);
    jPanel9.add(jBtnScale, null);
    jPanel3.add(jPanel15, BorderLayout.NORTH);
    jPanel15.add(jTFTW, BorderLayout.CENTER);
    jPanel15.add(jLabel1, BorderLayout.WEST);
    jPanel6.add(jPanel14, BorderLayout.SOUTH);
    jPanel12.add(jTFTY, BorderLayout.CENTER);
    jPanel12.add(jLabel3, BorderLayout.WEST);
    jPanel6.add(jPanel10, BorderLayout.CENTER);
    jPanel10.add(jPanel17,  BorderLayout.SOUTH);
    jPanel20.add(jPanel22,  BorderLayout.NORTH);
    jPanel20.add(jPanel21, BorderLayout.CENTER);
    jPanel10.add(jPanel23, BorderLayout.NORTH);
    jPanel23.add(jLabel9, BorderLayout.NORTH);
    jPanel23.add(jTFTheta,  BorderLayout.CENTER);
    jPanel10.add(jPanel16,  BorderLayout.CENTER);
    jPanel16.add(jTBtnCentre,             new GridBagConstraints(0, 3, 3, 1, 0.0, 0.0
            ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(14, -5, 7, 5), 0, 0));
    jPanel16.add(jLabel13,   new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0
            ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel16.add(jLabel12, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel16.add(jTFCY,  new GridBagConstraints(2, 1, 1, 2, 0.0, 0.0
            ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 18, 0));
    jPanel16.add(jTFCX, new GridBagConstraints(1, 0, 2, 1, 0.0, 0.0
            ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, -1, 0, 1), 21, 0));
    jPanel16.add(jTBtnCentre,  new GridBagConstraints(2, 3, 2, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel14.add(jPanel13, BorderLayout.SOUTH);
    jPanel13.add(jBtnTranslate, null);
    jPanel14.add(jPanel11, BorderLayout.NORTH);
    jPanel14.add(jPanel12, BorderLayout.CENTER);
    jPanel11.add(jLabel8, BorderLayout.WEST);
    jPanel11.add(jTFTX, BorderLayout.CENTER);
    jPanel4.add(jPanel7, BorderLayout.NORTH);
    jPanel7.add(jLabel6,            new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jBtnForeColor,        new GridBagConstraints(1, 0, 1, 2, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jLabel5,       new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jBtnBkColor,      new GridBagConstraints(1, 2, 1, 2, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jLabel4,      new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jLabel7,      new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel7.add(jTextFieldLWidth,   new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 5, 0, 16), 34, 0));
    jPanel7.add(jComboBoxL,       new GridBagConstraints(1, 5, 1, 2, 0.0, 0.0
            ,GridBagConstraints.SOUTH, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 26, 0));
    jPanel1.add(jPanelD, BorderLayout.CENTER);
    jToolBar.add(jRBtnFill, null);
    jPanelD.iLine = 0;
    jPanelD.iObject = 0;
    jPanelD.lWidth = Integer.parseInt(jTextFieldLWidth.getText());

    jComboBoxL.addItem("虚线");
    jComboBoxL.addItem("实线");
    jComboBoxL.addItem("点线");
    jComboBoxL.setSelectedIndex(1);

    rbtnGFill.add(jRBtnFill);
    rbtnGFill.add(jRBtnUnFill);
    jToolBar.add(jRBtnUnFill, null);

    jMenuL.add(jRBtnMenuItemLD);
    jMenuL.add(jRBtnMenuItemLM);
    jMenuL.add(jRBtnMenuItemLB);

    jMenu2.add(jCheckBoxMenuItemDemo);
    jMenuFill.add(jRBtMenuItemF8);
    jMenuFill.add(jRBtMenuItemF4);
    jMenuFill.add(jRBtMenuItemFS4);
    jMenuFill.add(jRBtMenuItemFP);

    rbtnGFillMethod.add(jRBtMenuItemF8);
    rbtnGFillMethod.add(jRBtMenuItemF4);
    rbtnGFillMethod.add(jRBtMenuItemFS4);
    rbtnGFillMethod.add(jRBtMenuItemFP);

    rbtnGLCE.add(jRBtnMenuItemE);
    rbtnGLCE.add(jRBtnMenuItemC);
    rbtnGLCE.add(jRBtnMenuItemP);


    rbtnGL.add(jRBtnMenuItemLD);
    rbtnGL.add(jRBtnMenuItemLB);
    rbtnGL.add(jRBtnMenuItemLM);
    jPanel17.add(jBtnRotate,  BorderLayout.SOUTH);

  }
  //File | Exit action performed
  public void jMenuFileExit_actionPerformed(ActionEvent e) {
    System.exit(0);
  }
  //Help | About action performed
  public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
    Frame_AboutBox dlg = new Frame_AboutBox(this);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
    dlg.setModal(true);
    dlg.pack();
    dlg.show();
  }

⌨️ 快捷键说明

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