实验五Java事件处理实验目的1.掌握Java语言中的事件处理方法2.掌握Java语言中事件源、监视器和处理事件的接口的概念实验内容1.图形用户界面设计程序(ArtFo nt.java)在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。
分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。
要求实现如下功能:当在文本框中输入文字后回车,在文本域中显示输入的文字。
当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。
当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。
当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字体样式。
当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。
当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。
图1程序界面运行效果package Sy;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ArtFont extends JFrame {static ArtFont artFont;JComboBox fontType;// 字体样式下拉框JComboBox fontSize;// 字体大小下拉框JComboBox windowStyle;// 窗体样式下拉框JCheckBox boldBx;// 粗体按钮JCheckBox italicBx;// 斜体按钮JButton colorBtn;// 颜色按钮String[] fontNames;// 字体名称String[] fontSizes;// 字体大小JLabel label;// 输入提示标签JTextField inputText;// 文字输入框JTextArea txtArea;// 文字显示区JPanel northPanel;// 字体设置JPanel centerPanel;// 显示效果区JPanel southPanel;/样式设置Font font;int boldStyle, italicStyle;int fontSizeStyle;String fontNameStyle;Color colorStyle = Color.black;// 设置字体的默认颜色为黑色String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " };public ArtFont() {super(”字体设置");// 设置默认字体boldStyle = 0;italicStyle = 0;fontSizeStyle = 10;fontNameStyle = "宋体 ";font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);northPanel = getNorthPanel();centerPanel = getCenterPanel();southPanel = getSouthPanel();// 设置容器Container container = getContentPane();container.setLayout(new BorderLayout());add(northPanel , BorderLayout.NORTH);// 将 northPanel 添加到窗体的北部add(centerPanel , BorderLayout.CENTER);// 将 centerPanel 添加到窗体的中部add(southPanel , BorderLayout.SOUTH);// 将 southPanel 添加到窗体的南部 setSize(500, 300);setLocationRelativeTo(null);// 将窗体位于屏幕的中央setVisible(true);}private JPanel getNorthPanel() {JPanel panel = new JPanel();label = new JLabel("输入 ");inputText = new JTextField(10);boldBx = new JCheckBox("粗体 ");italicBx = new JCheckBox("斜体 ");colorBtn = new JButton("颜色 ");inputText.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 文本输入 txtArea.setText(inputText.getText());}});boldBx.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 加粗if(e.getStateChange() == ItemEvent.SELECTED) boldStyle = 1;elseboldStyle = 0;font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});italicBx.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 斜体if(e.getStateChange() == ItemEvent.SELECTED) italicStyle = 1;elseitalicStyle = 0;font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});colorBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 改变颜色colorStyle = JColorChooser.showDialog(null, "请选择一种颜色 ",colorStyle);colorBtn.setForeground(colorStyle);txtArea.setForeground(colorStyle);font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});panel.add(label);panel.add(inputText);panel.add(boldBx);panel.add(italicBx);panel.add(colorBtn);return panel;}private JPanel getCenterPanel() {JPanel panel = new JPanel();panel.setLayout(new BorderLayout());txtArea = new JTextArea();panel.add(new JScrollPane(txtArea) , BorderLayout.CENTER);return panel;}private JPanel getSouthPanel() {JPanel panel = new JPanel();//获得系统默认字体GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();fontNames = ge.getAvailableFontFamilyNames();fontType = new JComboBox(fontNames);//设置字体大小fontSizes = new String[63];for (int i = 0; i <fontSizes.length; i++) {fontSizes[i] = Integer.toString(i+10);}fontSize = new JComboBox(fontSizes);windowStyle = new JComboBox(style);fontType.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 字体的类型fontNameStyle = (String) e.getItem();font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});fontSize.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 字体的大小String s = (String) e.getItem(); fontSizeStyle = Integer.parseInt(s);font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});windowStyle.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 改变窗口String s = (String) e.getItem();String className = "";if (s.equals("Windows 显示效果 "))。