Java 实训 使用弹出对话框设置主窗体中的文本字体

 实训要求:
编写一个主窗体,该窗体有“设置字体”按钮和一个文本区。
编写一个JDialog的子类; FontDialog,其中使用下拉列表显示全部
字体的名称,当选择下拉列表中某个字体名称后。FontDialog 中使用标签
显示该字体的效果。
在主窗体中点击“设置字体”按钮时弹出FontDialog 对话框。
在FontDialg 对话框中选择完字体,点击确认按钮后返回主窗体并完
成主窗体中文本的字体设置。

参考结果:
Java 实训 使用弹出对话框设置主窗体中的文本字体_第1张图片
代码:
Ziti.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

public class Ziti extends JFrame {
	JButton b;
	JComboBox fontName;
	JTextArea area;
	FontDialog fd = new FontDialog();
	String[] fontArr;
	String strArr1 = "睿亚训Java课程实验指导书(第二版)";

	public static void main(String[] args) {
		Ziti frame = new Ziti();
		frame.setBounds(600, 250, 800, 600);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setTitle("设置字体");
		frame.setVisible(true);
	}

	Ziti() {
		fd.ziti = this;
		area = new JTextArea(5, 10);
		setLayout(new BorderLayout());
		b = new JButton("设置字体");
		b.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals("设置字体")) {
					fd.setVisible(true);
				}
			}
		});
		area.setText(strArr1);
		add(b, BorderLayout.NORTH);
		add(new JScrollPane(area));
	}

	void setArea(Font font) {
		area.setFont(font);
	}
}
FontDialog.java
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FontDialog extends JDialog implements ItemListener {
	JComboBox fontName;
	JTextArea txtContent;
	Font font1;
	JButton yes, no;
	final String[] fontArr;
	final String strArr = " Hello 奥运";
	Ziti ziti;

	public FontDialog() {
		txtContent = new JTextArea();
		txtContent.setText(strArr);
		JScrollPane jsp = new JScrollPane(txtContent);
		GraphicsEnvironment env = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		fontArr = env.getAvailableFontFamilyNames();
		fontName = new JComboBox(fontArr);
		fontName.addItemListener(this);
		fontName.setSelectedItem("宋体");
		FlowLayout layout = new FlowLayout(FlowLayout.CENTER, 40, 5);
		JPanel pan = new JPanel(layout);
		pan.add(fontName);
		Container c = this.getContentPane();
		yes = new JButton("确定");
		no = new JButton("取消");
		yes.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals("确定")) {
					ziti.setArea(font1);
					setVisible(false);
				}
			}
		});
		no.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals("取消")) {
					setVisible(false);
				}
			}
		});
		JPanel pan2 = new JPanel(layout);
		pan2.add(yes);
		pan2.add(no);
		c.add(pan, BorderLayout.NORTH);
		c.add(jsp, BorderLayout.CENTER);
		c.add(pan2, BorderLayout.SOUTH);
		this.setBounds(600, 260, 400, 300);
		this.setResizable(false);
		this.setVisible(false);

	}

	public void itemStateChanged(ItemEvent e) {
		String s = (String) fontName.getSelectedItem();
		font1 = new Font(s, Font.PLAIN, 55);
		txtContent.setFont(font1);
	}
}

运行结果:

Java 实训 使用弹出对话框设置主窗体中的文本字体_第2张图片Java 实训 使用弹出对话框设置主窗体中的文本字体_第3张图片Java 实训 使用弹出对话框设置主窗体中的文本字体_第4张图片

你可能感兴趣的:(Java)