Notepad Font

 package notepad;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JColorChooser;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class SetFont implements ActionListener, ListSelectionListener
{
 private static final long serialVersionUID = 1L;

 private JScrollPane jScrollName, jScrollSize;

 private JLabel jLabelName, jLabelStyle, jLabelSize;

 private JTextField jTextName, jTextStyle, jTextSize;

 private JList jListName, jListStyle, jListSize;

 private JButton jButtonOK, jButtonCancel, jButtonColor;

 private JTextArea jNotepad;

 private JDialog fontDialog;

 public SetFont(JNotepad owner, JTextArea jText)
 {
  jNotepad = jText;
  jLabelName = new JLabel("字体名称");
  jLabelName.setBounds(80, 16, 64, 20);
  jLabelStyle = new JLabel("字体类型");
  jLabelStyle.setBounds(206, 16, 64, 20);
  jLabelSize = new JLabel("字体大小");
  jLabelSize.setBounds(280, 16, 64, 20);
  jTextName = new JTextField();
  jTextName.setBounds(16, 40, 180, 20);
  jTextStyle = new JTextField();
  jTextStyle.setBounds(206, 40, 64, 20);
  jTextSize = new JTextField();
  jTextSize.setBounds(280, 40, 64, 20);
  jButtonColor = new JButton("颜色");
  jButtonColor.setBounds(28, 197, 75, 23);
  jButtonColor.addActionListener(this);
  jButtonOK = new JButton("确定");
  jButtonOK.setBounds(150, 197, 75, 23);
  jButtonOK.addActionListener(this);
  jButtonCancel = new JButton("取消");
  jButtonCancel.setBounds(256, 197, 75, 23);
  jButtonCancel.addActionListener(this);
  fontDialog = new JDialog(owner, "字体");
  Container fontPane = fontDialog.getContentPane();
  fontPane.setLayout(null);
  fontPane.add(jLabelName, null);
  fontPane.add(jLabelStyle, null);
  fontPane.add(jLabelSize, null);
  fontPane.add(jTextName, null);
  fontPane.add(jTextStyle, null);
  fontPane.add(jTextSize, null);
  fontPane.add(getJScrollName(), null);
  fontPane.add(getJListStyle(), null);
  fontPane.add(getJScrollSize(), null);
  fontPane.add(jButtonColor, null);
  fontPane.add(jButtonOK, null);
  fontPane.add(jButtonCancel, null);
  fontDialog.setBounds(400, 200,  367,276);
  fontDialog.setModal(false); // 无模式
  fontDialog.setResizable(false); // 固定窗体大小
  fontDialog.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    jTextName.setText(jListName.getSelectedValue().toString());
    jTextStyle.setText(jListStyle.getSelectedValue().toString());
    jTextSize.setText(jListSize.getSelectedValue().toString());
   }
  });
 }

 public void setVisible(boolean flag)
 {
  fontDialog.setVisible(flag);
 }

 private JScrollPane getJScrollName()
 {
  if (jScrollName == null)
  {
   String[] fontName = {"宋体","新宋体","宋体-方正超大字符集","仿宋_GB2312","楷体_GB2312",
           "隶书","黑体","华文行楷","华文彩云","华文新魏","华文仿宋","华文中宋",
                  "华文细黑","方正舒体","方正姚体","幼圆","Arial","Arial Black","Dialog","Times New Roman"};
   jListName = new JList(fontName);
   jListName.addListSelectionListener(this);
   jListName.setSelectedIndex(0);
   jScrollName = new JScrollPane();
   jScrollName.setBounds(16, 60, 180, 120);
   jScrollName.setViewportView(jListName);
  }
  return jScrollName;
 }

 private JList getJListStyle()
 {
  if (jListStyle == null)
  {
   String[] fontStyle = {"常规","粗体","斜体","粗斜体"};//Font.PLAIN常规
   jListStyle = new JList(fontStyle);
   jListStyle.addListSelectionListener(this);
   jListStyle.setSelectedIndex(0);
   jListStyle.setBounds(206, 60, 64, 120);
  }
  return jListStyle;
 }

 private JScrollPane getJScrollSize()
 {
  if (jListSize == null)
  {
   String[] fontSize = {"12","14","16","18","20","22","24","26","28","32","36","48","64","72"};
   jListSize = new JList(fontSize);
   jListSize.addListSelectionListener(this);
   jListSize.setSelectedIndex(0);
   jScrollSize = new JScrollPane();
   jScrollSize.setBounds(280, 60, 64, 120);
   jScrollSize.setViewportView(jListSize);
  }
  return jScrollSize;
 }

 public void actionPerformed(ActionEvent e)
 {
  if(e.getSource().equals(jButtonOK))
  {
   Font font = new Font(jListName.getSelectedValue() + "", jListStyle.getSelectedIndex(), Integer.parseInt(jListSize.getSelectedValue() + ""));
   jNotepad.setFont(font);
  }
  else if(e.getSource().equals(jButtonCancel))
  {
   jTextName.setText(jListName.getSelectedValue() + "");
   jTextStyle.setText(jListStyle.getSelectedValue() + "");
   jTextSize.setText(jListSize.getSelectedValue() + "");
   fontDialog.setVisible(false);
  }
  else
  {
   Color color = JColorChooser.showDialog(fontDialog, "字体颜色", jNotepad.getSelectedTextColor());
   if (color != null)
    jNotepad.setSelectedTextColor(color);
  }
 }

 public void valueChanged(ListSelectionEvent e)
 {
  JList list = (JList)e.getSource();
  if(e.getSource().equals(jListName))
   jTextName.setText(list.getSelectedValue() + "");
  else if(e.getSource().equals(jListStyle))
   jTextStyle.setText(list.getSelectedValue() + "");
  else
   jTextSize.setText(list.getSelectedValue() + "");
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值