设计一个具有字体设置和设置后字体效果显示的程序。要求具有字体类型和大小选择设置,字体样式和颜色设置,以及字体设置后效果显示功能。此窗体带关闭功能。
2条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-05-27 16:26关注
我写了一个,界面是这样,你看看这样可以吗?
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); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报