java题目解答程序设计

设计一个具有字体设置和设置后字体效果显示的程序。要求具有字体类型和大小选择设置,字体样式和颜色设置,以及字体设置后效果显示功能。此窗体带关闭功能。

我写了一个,界面是这样,你看看这样可以吗?

package java3.T8;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ToolkitDemo extends JFrame implements ItemListener,ActionListener{

	JLabel lblTitle;
	//多选框
	JCheckBox cbBold,cbItalic;
	//下拉列表框
	JComboBox<Integer> fontSize;
	//下拉列表框
	JComboBox<String> fontName;
	//选择颜色
	JButton btnColor;
	
	//保存粗体,斜体,字号的值
	int bold=Font.PLAIN;
	int italic = Font.PLAIN;
	int size = 20;
	String fontList[] ;
	String fontFace = "";
	public ToolkitDemo() {
		//调用父类的构造函数,设置窗口标题
		super("Toolkit工具类的使用");
		//设置窗口标题
//		setTitle("Toolkit工具类的使用");
		//获取toolkit实例
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		//加载图片,参数是图片文件的路径
		Image image = toolkit.getImage("D:\\work\\QQ\\qq.jpg");
//		Image image = toolkit.getImage("D:/work/QQ/qq.jpg");
		//把image设置到窗口图标
		this.setIconImage(image);
		//获取屏幕大小(显示器的分辨率)
		//获取屏幕宽度
		int width = toolkit.getScreenSize().width;
		//获取屏幕高度
		int height = toolkit.getScreenSize().height;
		System.out.println("屏幕宽度:"+width+",高度:" + height);
		
		//获取系统支持在字体列表
		fontList = toolkit.getFontList();
		for(String fontName : fontList) {
			System.out.println("字体名称:"+fontName);
		}
		fontName  = new JComboBox<String>(fontList);
		fontName.addItemListener(this);
		fontFace = fontList[0];
		lblTitle = new JLabel("展示Font设置属性",JLabel.CENTER);
		//设置字体颜色
		lblTitle.setForeground(Color.RED);
		Font font = new Font("宋体",Font.PLAIN,size);
		//设置JLabel的字体
		lblTitle.setFont(font);
		cbBold = new JCheckBox("粗体");
		cbItalic = new JCheckBox("斜体");
		
		Integer size[] = {10,12,14,18,20,28,38,48,58,72};
		//创建字体列表
		fontSize = new JComboBox<Integer>(size);
		
		//设置选中的默认值为20
		fontSize.setSelectedIndex(4);
		
		btnColor = new JButton("选择颜色");
		btnColor.addActionListener(this);
		//设置Panel的布局为流布局
		JPanel northPanel = new JPanel(new FlowLayout());
		//把组件放在面板中
		northPanel.add(fontName);
		northPanel.add(cbBold);
		northPanel.add(cbItalic);
		northPanel.add(fontSize);
		northPanel.add(btnColor);
		//把组件添加到窗口
		//没有设置位置,默认就是中间BorderLayout.CENTER
		add(lblTitle);
		add(northPanel,BorderLayout.NORTH);
		//注册监听
		cbBold.addItemListener(this);
		cbItalic.addItemListener(this);
		fontSize.addItemListener(this);
		//再把面板放在窗口中的北部区域
		setSize(500,400);
		setVisible(true);
//		show(); //显示窗口,该函数不推荐使用
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//窗口居中
//		setLocationRelativeTo(null);
		//设置窗口位置
		setLocation((width-500)/2, (height-400)/2);
	}
	//item事件,点击多选框,下拉列表框时,会触发该事件
	@Override
	public void itemStateChanged(ItemEvent e) {
		if(e.getSource() == cbBold) {
			//选中返回1,反之为2
			int state = e.getStateChange();
			if(state == 1) {
				bold = Font.BOLD; //选中粗体
			}else {
				bold = Font.PLAIN;
			}
		}else if(e.getSource()==cbItalic) {
			int state = e.getStateChange();
			if(state == 1) {
				italic = Font.ITALIC; //选中斜体
			}else {
				italic = Font.PLAIN;
			}
		}else if(e.getSource() == fontSize) {
			//字号,把返回的Object类型的字号强制转换为整形
			size = (Integer)fontSize.getSelectedItem();
		}else if(e.getSource() == fontName) {
			fontFace = fontList[fontName.getSelectedIndex()];
		}
		//创建新的字体,然后设置到lblTitle组件中,改变字体
		Font font = new Font(fontFace,bold + italic, size);
		lblTitle.setFont(font);
	}
	
	public static void main(String[] args) {
		new ToolkitDemo();
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		JColorChooser colordlg = new JColorChooser();
		//打开颜色对话框,并且获取选中的颜色
		Color color=colordlg.showDialog(this, "请选择字体颜色", Color.BLACK);
		//设置发送文本框的字体颜色
		lblTitle.setForeground(color);
		
	}
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632