Java图形用户界面设计:字体设置程序 (ArtFont.java)

本程序是一个使用Java Swing实现的字体设置程序,允许用户自定义文本的字体样式、大小、颜色、粗体、斜体等,并模拟不同操作系统的显示效果。

程序功能

  • 在文本框中输入文字后回车,在文本域中显示输入的文字。
  • 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。
  • 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。
  • 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字体样式。
  • 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。
  • 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。

程序界面

程序运行效果

代码实现

1. ArtFont 类

public class ArtFont extends JFrame implements ActionListener, ItemListener {
	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, underlineStyle;
	int fontSizeStyle;
	String fontNameStyle;
	Color colorStyle = Color.black;// 设置字体的默认颜色为黑色;
	String[] style = { '默认显示效果', 'Windows显示效果', 'Unix显示效果' };

	public ArtFont() {
		super('字体设置');
		// 设置默认字体
		boldStyle = 0;
		italicStyle = 0;
		underlineStyle = 0;
		fontSizeStyle = 10;
		fontNameStyle = '宋体';
		font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);

		northPanel = getNorthPanel();
		centerPanel = getCenterPanel();
		southPanel = getSouthPanel();
		// 设置容器;
		Container container = getContentPane();
		container.setLayout(new BorderLayout());
		//将northPanel添加到窗体的北部
		container.add(northPanel, BorderLayout.NORTH);
		//将centerPanel添加到窗体的中部
		container.add(centerPanel, BorderLayout.CENTER);
		//将southPanel添加到窗体的南部
		container.add(southPanel, BorderLayout.SOUTH);
		setSize(500, 300);
		//将窗体位于屏幕的中央
		setLocationRelativeTo(null);
		setVisible(true);	
	}	
	private JPanel getNorthPanel() {
		JPanel panel = new JPanel();		
		label = new JLabel('请输入文字:');
		inputText = new JTextField(20);
		boldBx = new JCheckBox('粗体');
		italicBx = new JCheckBox('斜体');
		colorBtn = new JButton('颜色');
		panel.add(label);
		panel.add(inputText);
		panel.add(boldBx);
		panel.add(italicBx);
		panel.add(colorBtn);
		//注册事件监视器
		inputText.addActionListener(this);
		boldBx.addItemListener(this);
		italicBx.addItemListener(this);
		colorBtn.addActionListener(this);
		return panel;
	}	
	private JPanel getCenterPanel() {
		JPanel panel = new JPanel();		
		txtArea = new JTextArea(10, 20);
		panel.setLayout(new BorderLayout());
		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);
		panel.add(fontType);
		panel.add(fontSize);
		panel.add(windowStyle);
		//注册事件监视器
		fontType.addItemListener(this);
		fontSize.addItemListener(this);
		windowStyle.addItemListener(this);
		return panel;
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		if (e.getSource() == boldBx) {
			if (boldBx.isSelected()) {
				boldStyle = Font.BOLD;
			} else {
				boldStyle = 0;
			}
		} else if (e.getSource() == italicBx) {
			if (italicBx.isSelected()) {
				italicStyle = Font.ITALIC;
			} else {
				italicStyle = 0;
			}
		} else if (e.getSource() == fontType) {
			fontNameStyle = (String) e.getItem();
		} else if (e.getSource() == fontSize) {
			fontSizeStyle = Integer.parseInt((String) e.getItem());
		} else if (e.getSource() == windowStyle) {
			String s = (String) e.getItem();
			String className = '';
			if (s.equals('Windows显示效果'))
				className = 'com.sun.java.swing.plaf.windows.WindowsLookAndFeel';
			else if (s.equals('Unix显示效果'))
				className = 'com.sun.java.swing.plaf.motif.MotifLookAndFeel';
			else if (s.equals('默认显示效果'))
				className = UIManager.getCrossPlatformLookAndFeelClassName();
			try {
				UIManager.setLookAndFeel(className);
				SwingUtilities.updateComponentTreeUI(this);
			} catch (Exception de) {
				System.out.println('Exception happened!');
			}
		}
		font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
		txtArea.setFont(font);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == inputText) {
			txtArea.setText(inputText.getText());
		} else if (e.getSource() == colorBtn) {
			Color color = JColorChooser.showDialog(this, '选择颜色', colorStyle);
			if (color != null) {
				colorBtn.setForeground(color);
				txtArea.setForeground(color);
				colorStyle = color;
			}
		}
	}
}

2. Main 方法

public static void main(String args[]) {
	ArtFont artFont = new ArtFont();
	artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

运行程序

  1. 将代码保存为 ArtFont.java 文件。
  2. 使用 Java 编译器编译代码: javac ArtFont.java
  3. 运行程序: java ArtFont

总结

本程序展示了使用 Java Swing 实现简单图形用户界面设计的步骤,包括创建组件、布局、添加事件监听器、处理事件等。通过学习本程序,可以帮助理解 Java Swing 的基本概念和用法,并能够开发出更加复杂和功能强大的 GUI 应用。

Java图形用户界面设计:字体设置程序

原文地址: https://www.cveoy.top/t/topic/no9c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录