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

📄 menufont.java

📁 java思想编程与设计模块
💻 JAVA
字号:
/*
 * 文件名:MenuFont.java
 * 说  明:实现文本字体编辑功能
 */
// 导入相关包
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

// 主类MenuFont
public class MenuFont extends JDialog
                      implements ItemListener,
                                 ActionListener,
                                 TextListener {
  // AWT组件声明
  CheckboxGroup gp;
  Checkbox plain, bold, italic, boldItalic;
  Choice fontNameChoice;
  TextField fontSizeTextField;
  List fontSizeList;
  TextField fontTextField;
  Button fontButtonOk;
  Button fontButtonCancel;
  // 默认字体
  int fontStyleInt = 0;
  // 更改标记
  boolean changed = true;
  // 字号范围
  int fontSizeMin = 10, fontSizeMax = 36, fontSizeChangedStep = 2;
  
  // 构造方法
  MenuFont(Frame frame, boolean modal) {
    super(frame, modal);
  }
  
  // myLayout方法,窗体布局	
  public Font myLayout(Font taFont) {
    this.getContentPane().setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridwidth = 1;
    gbc.gridheight =1;
    gbc.weightx = 1;
    gbc.weighty = 1;
    gbc.fill = gbc.HORIZONTAL;
    gbc.anchor = gbc.CENTER;

    // a TextField for font size
    fontSizeTextField = new TextField(taFont.getSize() + "",14);
    fontSizeTextField.selectAll();
    fontSizeTextField.addTextListener(this);
    gbc.gridx = 0;
    gbc.gridy = 1;
    getContentPane().add(fontSizeTextField, gbc);

    //CheckboxGroup for font style
    gp = new CheckboxGroup();
    if(taFont.getStyle() == 0)
      plain = new Checkbox("PLAIN", true, gp);
    else
      plain = new Checkbox("PLAIN", false, gp);
    plain.addItemListener(this);
    if(taFont.getStyle() == 1)
      bold = new Checkbox("BOLD", true, gp);
    else
      bold = new Checkbox("BOLD", false, gp);
    bold.addItemListener(this);
    if(taFont.getStyle() == 2)
      italic = new Checkbox("ITALIC", true, gp);
    else
      italic = new Checkbox("ITALIC", false, gp);
    italic.addItemListener(this);
    if(taFont.getStyle() == 3)
      boldItalic = new Checkbox("BOLDITALIC", true, gp);
    else
      boldItalic = new Checkbox("BOLDITALIC", false, gp);
    boldItalic.addItemListener(this);
    gbc.gridx = 0;
    gbc.gridy = 0;
    getContentPane().add(plain, gbc);
    gbc.gridx = 1;
    gbc.gridy = 0;
    getContentPane().add(bold, gbc);
    gbc.gridx = 2;
    gbc.gridy = 0;
    getContentPane().add(italic, gbc);
    gbc.gridx = 3;
    gbc.gridy = 0;
    getContentPane().add(boldItalic, gbc);

    // a TextField + List for font size
    //fontSizeTextField = new TextField(taFont.getSize() + "",14);
    //fontSizeTextField.selectAll();
    //fontSizeTextField.addTextListener(this);
    //gbc.gridx = 0;
    //gbc.gridy = 1;
    //add(fontSizeTextField, gbc);
    fontSizeList = new List(4, false);
    fontSizeList.addItemListener(this);
    int indexOfList = 0;
    boolean breakHere = false;
    for(int i = fontSizeMin; i <= fontSizeMax; i = i + fontSizeChangedStep) {
      if(!breakHere) {
        if(i != taFont.getSize()) {
          indexOfList++;
        }
        else {
          breakHere = true;
        }
      }
      fontSizeList.add(i + "");
    }
    if(indexOfList < 0 ||
       indexOfList > (fontSizeMax - fontSizeMin)/fontSizeChangedStep + 1)
      fontSizeList.select(0);
    else
      fontSizeList.select(indexOfList);
    gbc.gridx = 0;
    gbc.gridy = 2;
    getContentPane().add(fontSizeList, gbc);

    //Choice for font name
    gbc.gridx = 1;
    gbc.gridy = 1;
    fontNameChoice = new Choice();
    fontNameChoice.addItemListener(this);
    fontNameChoice.add("Serif");
    fontNameChoice.add("Courier");
    fontNameChoice.add("Helvetica");
    fontNameChoice.add("TimesRoman");
    fontNameChoice.select(taFont.getName());
    getContentPane().add(fontNameChoice, gbc);

    //two Button Ok Cancel
    fontButtonOk = new Button("Ok");
    fontButtonOk.addActionListener(this);
    gbc.gridx = 2;
    gbc.gridy = 2;
    gbc.fill = gbc.NONE;
    getContentPane().add(fontButtonOk, gbc);
    fontButtonCancel = new Button("Cancel");
    fontButtonCancel.addActionListener(this);
    gbc.gridx = 3;
    gbc.gridy = 2;
    getContentPane().add(fontButtonCancel, gbc);

    //a TextField for demo the font
    fontTextField = new TextField("Java awt");
    fontTextField.setEditable(false);
    fontTextField.setSize(90, 60);
    fontTextField.setFont(taFont);
    gbc.weightx = 100;
    gbc.weighty = 230;
    gbc.gridx = 2;
    gbc.gridy = 1;
    gbc.gridwidth = 2;
    gbc.gridheight = 1;
    gbc.fill = gbc.BOTH;
    getContentPane().add(fontTextField, gbc);

    this.addWindowListener(new WindowAdapter() {
                             public void windowClosing(WindowEvent e) {
                               dispose();
                             }
                           });
    this.setLocation(120, 120);
    this.setResizable(false);
    this.setSize(480,160);
    this.setVisible(true);
    if(changed)
      return returnFont();
    else
      return taFont;
  }//end of myLayout

  //Item监听方法
  public void itemStateChanged(ItemEvent ie) {
    if(ie.getSource() == plain) {
      updateFontTextField();
    }
    else if(ie.getSource() == bold) {
      updateFontTextField();
    }
    else if(ie.getSource() == italic) {
      updateFontTextField();
    }
    else if(ie.getSource() == boldItalic) {
      updateFontTextField();
    }
    else if(ie.getSource() == fontNameChoice) {
      updateFontTextField();
    }
    else if(ie.getSource() == fontSizeList) {
      List lf = (List)ie.getSource();
      fontSizeTextField.setText(lf.getSelectedItem());
      updateFontTextField();
    }

  }//end of ItemListener

  //文本改变监听方法
  public void textValueChanged(TextEvent e) {
    int indexOfList = 0;
    boolean breakHere = false;
    int thisNum = 0;
    for(int i = fontSizeMin; i <= fontSizeMax; i = i + fontSizeChangedStep) {
      if(!breakHere) {
        try {
          thisNum = Integer.parseInt(fontSizeTextField.getText());
        } catch(NumberFormatException nfe) {
          thisNum = 0;
        }
        if(i != thisNum) {
          indexOfList++;
        }
        else {
          breakHere = true;
        }
      }
    }
    if(indexOfList < 0 ||
       indexOfList > (fontSizeMax - fontSizeMin)/fontSizeChangedStep + 1)
      fontSizeList.select(0);
    else
      fontSizeList.select(indexOfList);
    updateFontTextField();
  }//end of TextListener

  //ActionListener
  public void actionPerformed(ActionEvent ae) {
    if(ae.getSource() == fontButtonOk) {
       changed = true;
       dispose();
    }
    else if(ae.getSource() == fontButtonCancel) {
      changed = false;
      dispose();
    }
  }//end of ActionListener

  public Font returnFont() {
    updateFontTextField();
    return new Font(fontNameChoice.getSelectedItem(),
                    fontStyleInt,
                    Integer.parseInt(fontSizeList.getSelectedItem()));
  }

  private void updateFontTextField() {
    if(gp.getSelectedCheckbox().getLabel().equals("PLAIN")){
      fontStyleInt = Font.PLAIN;
    }
    else if(gp.getSelectedCheckbox().getLabel().equals("BOLD")){
      fontStyleInt = Font.BOLD;
    }
    else if(gp.getSelectedCheckbox().getLabel().equals("ITALIC")){
      fontStyleInt = Font.ITALIC;
    }
    else if(gp.getSelectedCheckbox().getLabel().equals("BOLDITALIC")){
      fontStyleInt = Font.BOLD + Font.ITALIC;
    }
    fontTextField.setFont(new Font(fontNameChoice.getSelectedItem(),
                                   fontStyleInt,
                                   Integer.parseInt(fontSizeList.getSelectedItem())));
  }

}//end of class MenuFont

⌨️ 快捷键说明

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