package Font; import Main.MainFrame; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** *@description 颜色选择器 * @author 小路 * @date 2013-05-02 */ public class MyFont extends JDialog { private MainFrame mf; private Box box; private JTextField fonttext;//字体文本框 private JTextField styletext;//字形文本框 private JTextField sizetext;//字体大小文本框 private JList fontlist;//字体选择列表 private JList stylelist;//字形选择列表 private JList sizelist;//大小选择列表 private JTextField previewtext;//预览文本框 private JRadioButton chinaview;//中文预览 private JRadioButton westview;//西文预览 private JRadioButton numberview;//数字预览 private String Chinese = "小小记事本"; private String English = "NotePad"; private String Number = "0123456789"; private JButton ensure;//确定按钮 private JButton cancel;//取消按钮 public static int ensure_option = 1;//点击确定时返回1 public static int cancle_option = 0; public int returnValue = 3; private Font font;//预设字体和将返回选择的字体 //所有字体 private String [] fontarray; //所有字形 private String [] stylearray = {"常规","斜体","粗体","粗斜体"}; //所有字体大小 private String [] sizearray = {"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72", "初号","小号","一号","小一","二号","小二","三号","小三","四号","小四","五号","小五","六号","小六","七号","八号"}; //所有字体大小对应的数值 private int [] sizeofint = {8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72, 42, 36, 26, 24, 22, 18, 16, 15, 14, 12, 10, 9, 8, 7, 6, 5}; public MyFont() { } public MyFont(Font font,MainFrame mf) { this.setTitle("字体选择器"); this.mf = mf; this.font = font; init(); this.setResizable(false); this.pack(); } public void init() { //获得系统字体 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); fontarray = ge.getAvailableFontFamilyNames(); //主容器,垂直摆放其中的控件 box = Box.createVerticalBox(); box.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));//周边留空 fonttext = new JTextField("Fixedsys"); fonttext.setEditable(false); fonttext.setBackground(Color.WHITE); styletext = new JTextField("常规"); styletext.setEditable(false); styletext.setBackground(Color.WHITE); sizetext = new JTextField("12"); sizetext.setEditable(false); sizetext.setBackground(Color.WHITE); previewtext = new JTextField(10); previewtext.setHorizontalAlignment(JTextField.CENTER);//中间对齐 previewtext.setText(Chinese); previewtext.setFont(font); previewtext.setEditable(false); previewtext.setBackground(Color.WHITE); chinaview = new JRadioButton("中文预览",true); westview = new JRadioButton("西文预览"); numberview = new JRadioButton("数字预览"); ButtonGroup viewselect = new ButtonGroup(); viewselect.add(chinaview); viewselect.add(westview); viewselect.add(numberview); fontlist = new JList(fontarray); stylelist = new JList(stylearray); sizelist = new JList(sizearray); ensure = new JButton("确定"); cancel = new JButton("取消"); Box fontbox = Box.createVerticalBox(); fontbox.setBorder(BorderFactory.createTitledBorder("字体(F):")); fontbox.add(fonttext); JScrollPane fontscrp = new JScrollPane(fontlist); fontscrp.setPreferredSize(new Dimension(160,100)); fontscrp.setMinimumSize(new Dimension(160,100)); fontscrp.setMaximumSize(new Dimension(160,100)); fontbox.add(fontscrp); Box stylebox = Box.createVerticalBox(); stylebox.setBorder(BorderFactory.createTitledBorder("字形(Y):")); stylebox.add(styletext); JScrollPane stylescrp = new JScrollPane(stylelist); stylescrp.setPreferredSize(new Dimension(90,100)); stylescrp.setMinimumSize(new Dimension(90,100)); stylescrp.setMaximumSize(new Dimension(90,100)); stylebox.add(stylescrp); Box sizebox = Box.createVerticalBox(); sizebox.setBorder(BorderFactory.createTitledBorder("大小(S):")); sizebox.add(sizetext); JScrollPane sizescrp = new JScrollPane(sizelist); sizescrp.setPreferredSize(new Dimension(80,100)); sizescrp.setMinimumSize(new Dimension(80,100)); sizescrp.setMaximumSize(new Dimension(80,100)); sizebox.add(sizescrp); Box northbox = Box.createHorizontalBox();//水平Box放置字体、字形和大小选择列表 northbox.add(Box.createHorizontalStrut(2)); northbox.add(fontbox); northbox.add(Box.createHorizontalStrut(5)); northbox.add(stylebox); northbox.add(Box.createHorizontalStrut(5)); northbox.add(sizebox); northbox.add(Box.createHorizontalStrut(2)); box.add(northbox,BorderLayout.NORTH); Box charsetbox = Box.createVerticalBox(); charsetbox.setBorder(BorderFactory.createTitledBorder("字符集:")); charsetbox.add(chinaview); charsetbox.add(westview); charsetbox.add(numberview); Box viewbox = Box.createVerticalBox(); viewbox.setBorder(BorderFactory.createTitledBorder("预览:")); viewbox.add(previewtext); Box middbox = Box.createHorizontalBox(); middbox.add(Box.createHorizontalStrut(2)); middbox.add(charsetbox); middbox.add(Box.createHorizontalStrut(5)); middbox.add(viewbox); middbox.add(Box.createHorizontalStrut(2)); box.add(Box.createVerticalStrut(2)); box.add(middbox,BorderLayout.CENTER); Box btnbox = Box.createHorizontalBox(); btnbox.add(Box.createHorizontalStrut(235)); btnbox.add(ensure); btnbox.add(Box.createHorizontalStrut(15)); btnbox.add(cancel); btnbox.add(Box.createHorizontalStrut(2)); box.add(Box.createVerticalStrut(2)); box.add(btnbox,BorderLayout.SOUTH); this.add(box); //事件监听 fontlist.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { fonttext.setText(String.valueOf(fontlist.getSelectedValue())); //预览 setPreview(); } }); stylelist.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { styletext.setText(String.valueOf(stylelist.getSelectedValue())); //预览 setPreview(); } }); sizelist.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { sizetext.setText(String.valueOf(sizelist.getSelectedValue())); //预览 setPreview(); } }); //单选按钮监听 chinaview.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { previewtext.setText(Chinese); } }); westview.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { previewtext.setText(English); } }); numberview.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { previewtext.setText(Number); } }); //确定和取消按钮监听 ensure.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //设置字体的方法 mf.getMainText().setFont(groupFont()); //退出 disposeDialog(mf); } }); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { disposeDialog(mf); } }); } //预览功能 private void setPreview() { Font f = groupFont(); previewtext.setFont(f); } //组合Font public Font groupFont() { String fontname = fonttext.getText(); String style = styletext.getText(); String size = sizetext.getText(); int fontstyle = 0; for(int i = 0;i < stylearray.length;i++) { if(style.equals(stylearray[i])) { fontstyle = i; break; } } int fontsize = 0; for(int i = 0;i < sizearray.length;i++) { if(size.equals(sizearray[i])) { fontsize = sizeofint[i]; break; } } return new Font(fontname,fontstyle,fontsize); } /*显示字体选择器 * owner 为上层组件 */ public void showDialog(JFrame owner) { this.font = new Font("黑体",20,20); this.setLocationRelativeTo(owner); this.setVisible(true); } //退出系统 public void disposeDialog(MainFrame owner) { this.removeAll(); this.dispose(); } public static void main(String[] args) { } }

xxxjjn LV1
2024年6月16日
queueandstack LV3
2022年12月2日
沙发床上的 LV1
2022年5月30日
183077946781 LV1
2021年11月15日
尹恒yingying LV18
2021年10月12日
任天晴 LV1
2021年7月10日
ncy123456789 LV6
2021年7月6日
毫无qiushengyu LV2
2021年7月2日
祁康伟 LV1
2021年7月1日
周星星哥哥在外面 LV1
2021年6月15日