设计一个具有字体设置和设置后字体效果显示的程序。要求具有字体类型和大小选择设置,字体样式和颜色设置,以及字体设置后效果显示功能。此窗体带关闭功能。
我写了一个,界面是这样,你看看这样可以吗?
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