⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontdialog.java

📁 一个记事本的程序 涵盖的方面是很多的
💻 JAVA
字号:
import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class FontDialog extends JDialog implements ListSelectionListener,ActionListener{
    private JTextField tfont,tfontstyle,tsize;
    
    private JLabel lblfont,lblfontstyle,lblsize;
    
    private JLabel lblexample,lblerror;
    
    private JList lstfont,lstfontstyle,lstsize;
    
    private JButton btnok,btncancle;
    
    private JPanel panel;
    
    private Font font,newfont;
    
    private String size[] = {"8","9","10","11","12","14","16","18","20","22","24",
            "26","28","30"};
    
    private String fontstyle[] = {"常规","粗体","斜体","粗斜体"};
    
    private String fname[];
    
    public FontDialog(JFrame f,String title,Boolean modal,Font newfont){
        super(f,title,modal);
        
        this.newfont = newfont;
        
        panel = new JPanel(null);
        
        lstfont = BuildFontList();
        lstfontstyle = BuildFontStyleList();
        lstsize = BuildFontSizeList();
        
        btnok = BuildOkButton();
        btncancle = BuildCancelButton();
        
        lblexample = BuildExampleLabel();
        lblerror = BuildErrorLabel();
        
        getContentPane().add(panel);
        getRootPane().setDefaultButton(btnok);
        
        setLocation(f.getX() + 60,f.getY() + 100);
        setResizable(false);
        setSize(425,340);
        setVisible(true);
    }
    
    public JList BuildFontList(){
        GraphicsEnvironment env = 
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        fname = env.getAvailableFontFamilyNames();
        
        JList lstfont = new JList(fname);
        
        lstfont.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        JScrollPane scrfont = new JScrollPane(lstfont);
        
        lstfont.setSelectedValue(newfont.getName(),true);
        
        tfont = new JTextField();
        tfont.setText(newfont.getName());
        
        lblfont = new JLabel("字体:");
        
        lblfont.setBounds(5,5,165,20);
        tfont.setBounds(5,25,165,25);
        scrfont.setBounds(5,55,165,100);
        
        panel.add(tfont); 
        panel.add(lblfont);
        panel.add(scrfont);
        
        lstfont.addListSelectionListener(this);
        
        return lstfont;
    }
    
    public JList BuildFontStyleList(){
        JList lstfontstyle = new JList(fontstyle);
        lstfontstyle.setSelectedIndex(newfont.getStyle());
        lstfontstyle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrstylefont = new JScrollPane(lstfontstyle);
        
        tfontstyle = new JTextField();
        tfontstyle.setText(lstfontstyle.getSelectedValue().toString());
        
        lblfontstyle = new JLabel("字形:");
        
        lblfontstyle.setBounds(180,5,100,20);
        tfontstyle.setBounds(180,25,100,25);
        scrstylefont.setBounds(180,55,100,100);
        
        panel.add(lblfontstyle);
        panel.add(tfontstyle);
        panel.add(scrstylefont);
        
        lstfontstyle.addListSelectionListener(this);
        
        return lstfontstyle;
    }
    
    public JList BuildFontSizeList(){
        JList lstsize = new JList(size);
        lstsize.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrsize = new JScrollPane(lstsize);
        lstsize.setSelectedValue(String.valueOf(newfont.getSize()),true);
        
        lblsize = new JLabel("大小:");
        
        tsize = new JTextField();
        tsize.setText(String.valueOf(newfont.getSize()));
        
        lblsize.setBounds(290,5,50,20);
        tsize.setBounds(290,25,50,25);
        scrsize.setBounds(290,55,50,100);
        
        panel.add(scrsize);
        panel.add(lblsize);
        panel.add(tsize);
        
        lstsize.addListSelectionListener(this);
        
        return lstsize;
    }
    
    private void getStyleValue(JList list,JTextField t,String str[]){
        int tmp = 0;
        int index[] = list.getSelectedIndices();
        
        for(int i = 0;i < index.length;i++){
            tmp = index[i];
        }
        t.setText(str[tmp]);
    }
    
    public JButton BuildOkButton(){
        JButton btnok = new JButton("确定");
        
        btnok.setBounds(350,25,60,30);
        
        panel.add(btnok); 
        
        btnok.addActionListener(this);
        
        return btnok;
    }
    
    public JButton BuildCancelButton(){
        JButton btncancle = new JButton("取消");
        
        btncancle.setBounds(350,60,60,30);
        
        panel.add(btncancle);
        
        btncancle.addActionListener(this);
        
        return btncancle;
    }
    
    public JLabel BuildExampleLabel(){
        JLabel lblexample = new JLabel("Java 记事本");
        
        lblexample.setHorizontalAlignment(JLabel.CENTER);
        lblexample.setBorder(BorderFactory.createTitledBorder(
                BorderFactory.createLoweredBevelBorder(),"示例"));
        lblexample.setFont(newfont);
        
        lblexample.setBounds(85,170,240,100);
        
        panel.add(lblexample);
        
        return lblexample;
    }
    
    public JLabel BuildErrorLabel(){
        JLabel lblerror = new JLabel();
        
        lblerror.setHorizontalAlignment(JLabel.CENTER);
        
        lblerror.setBounds(100,275,200,30);
        
        panel.add(lblerror);
        
        return lblerror;
    }

    public void valueChanged(ListSelectionEvent e) {
        getStyleValue(lstfont,tfont,fname);
        getStyleValue(lstfontstyle,tfontstyle,fontstyle);
        getStyleValue(lstsize,tsize,size);
        
        lblerror.setText("");
        
        String fontname;
        int style,size;
        
        fontname = tfont.getText();
        style = Integer.valueOf(lstfontstyle.getSelectedIndex());
        size = Integer.valueOf(tsize.getText());
        
        lblexample.setFont(new Font(fontname,style,size));
    }

    public void actionPerformed(ActionEvent e) {
        String fontname;
        int style,size;
        if(e.getSource() == btnok){
            lblerror.setText("");
            
            fontname = tfont.getText();
            style = lstfontstyle.getSelectedIndex();
            try{
                size = Integer.valueOf(tsize.getText());
                Font font = new Font(fontname,style,size);
                setFont(font);
                dispose();
            }
            catch(NumberFormatException nf){
                lblerror.setForeground(Color.red);
                lblerror.setText("输入的文本有误,请重新输入");
                tsize.selectAll();
                tsize.requestFocus(true);
            }
        }
        else{
            setFont(newfont);
            dispose();
        }
    }
    
    protected void processWindowEvent(WindowEvent e){
        if (e.getID() == WindowEvent.WINDOW_CLOSING){
            setFont(newfont);
            dispose();
        }
    }

    public Font getFont() {
        return font;
    }

    public void setFont(Font font) {
        this.font = font;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -