Java 无法更改字体&;使用jComboxes的JTextArea中的字体大小

Java 无法更改字体&;使用jComboxes的JTextArea中的字体大小,java,swing,fonts,jcombobox,font-size,Java,Swing,Fonts,Jcombobox,Font Size,我已经创建了一个JFrame,用户可以在其中编辑JTextArea中的文本。有一个JComboBox用于更改字体类型,一个JComboBox用于更改字体大小,还有两个JCheckbox用于使文本粗体和斜体。我已经完成了JCheckbox,但是我不知道如何通过使用JComobox来允许更改字体和字体大小。任何帮助都将不胜感激 import javax.swing.*; import java.awt.*; import java.awt.event.*; publ

我已经创建了一个JFrame,用户可以在其中编辑JTextArea中的文本。有一个JComboBox用于更改字体类型,一个JComboBox用于更改字体大小,还有两个JCheckbox用于使文本粗体和斜体。我已经完成了JCheckbox,但是我不知道如何通过使用JComobox来允许更改字体和字体大小。任何帮助都将不胜感激

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class SetFontModified extends JFrame 
    {
        private JPanel p1, p2;
        private JLabel jlblFontName, jlblFontSize;
        private JComboBox jcbFonts, jcbSizes;
        private JTextArea jtxtWelcome;
        private JCheckBox  jckbBold, jckbItalic;

        public SetFontModified()                                                              
        {
        p1 = new JPanel();
        jlblFontName = new JLabel("Font Name");                                               

        GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();   
        String[] fontNames = e.getAvailableFontFamilyNames();                                 
        jcbFonts = new JComboBox(fontNames);                                                      

        jlblFontSize = new JLabel("Font Size");// add 2nd JLabel

        jcbSizes = new JComboBox(); // create 2nd JComboBox
        for(int i = 1; i < 101; i ++) // populate JComboBox with array of font sizes 1-100
        {
            jcbSizes.addItem(i);
        }

        p1.add(jlblFontName); // add all 4 components to p1
        p1.add(jcbFonts);
        p1.add(jlblFontSize);
        p1.add(jcbSizes);

        jtxtWelcome = new JTextArea("Welcome to Java", 3, 20);// add a JTextArea
        add(jtxtWelcome);

        p2 = new JPanel(); // create p2 & add JCheckBoxes
        p2.add(jckbBold = new JCheckBox("Bold"));
        jckbBold.setMnemonic('B');
        p2.add(jckbItalic = new JCheckBox("Italic"));
        jckbItalic.setMnemonic('I');

        add(p1,BorderLayout.NORTH);
        add(p2,BorderLayout.SOUTH);

        ListenerClass listener = new ListenerClass();
        jcbFonts.addActionListener(listener);
        jcbSizes.addActionListener(listener);
        jckbBold.addActionListener(listener);
        jckbItalic.addActionListener(listener);
        }

        public static void main(String[] args) 
        {
       SetFontModified frame = new SetFontModified();
       frame.setTitle("Set Font Details");
       frame.pack();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setLocationRelativeTo(null);    
       frame.setVisible(true);
    }

    private class ListenerClass implements ActionListener
    {   
        public void actionPerformed(ActionEvent e)
        {   
            jcbSizes.getFontSize();

            Font plainFont = new Font("serif", Font.PLAIN, size);
            Font boldFont = new Font("serif", Font.BOLD, 14);
            Font italicFont = new Font("serif", Font.ITALIC, 14);
            Font boldItalicFont = new Font("serif", Font.BOLD + Font.ITALIC, 14);

            if (jckbBold.isSelected() && jckbItalic.isSelected()) 
                jtxtWelcome.setFont(boldItalicFont);

            else if (jckbBold.isSelected())
                jtxtWelcome.setFont(boldFont);

            else if (jckbItalic.isSelected())
                jtxtWelcome.setFont(italicFont);

            else jtxtWelcome.setFont(plainFont);                
        }
    }
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类SetFontModified扩展了JFrame
{
私人JPanel p1、p2;
私有JLabel jlbfontname,jlbfontsize;
私有JComboxJCbFonts,jcbSizes;
私人JTextArea jtxtWelcome;
私有JCheckBox jckbold,jckitalic;
公共SetFontModified()
{
p1=新的JPanel();
jlblFontName=新的JLabel(“字体名称”);
GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
字符串[]fontNames=e.getAvailableFontFamilyNames();
jcbFonts=新的JComboBox(fontNames);
jlblFontSize=新的JLabel(“字体大小”);//添加第二个JLabel
jcbSizes=new JComboBox();//创建第二个JComboBox
对于(int i=1;i<101;i++)//使用字体大小为1-100的数组填充JComboBox
{
jcbSizes.addItem(i);
}
p1.add(jlblFontName);//将所有4个组件添加到p1
p1.添加(jcbonts);
p1.添加(jlblFontSize);
p1.添加(jcbSizes);
jtxtWelcome=newJTextArea(“欢迎使用Java”,3,20);//添加一个JTextArea
添加(欢迎使用);
p2=新建JPanel();//创建p2并添加JCheckbox
p2.添加(jckbold=新JCheckBox(“粗体”);
jckbold.set助记符('B');
p2.添加(jckbItalic=新的JCheckBox(“斜体”);
jckbItalic.set助记符('I');
添加(p1,BorderLayout.NORTH);
添加(p2,南部边界布局);
ListenerClass listener=新建ListenerClass();
jcbonts.addActionListener(listener);
jcbSizes.addActionListener(listener);
jckbold.addActionListener(listener);
jckitalic.addActionListener(listener);
}
公共静态void main(字符串[]args)
{
SetFontModified frame=新建SetFontModified();
frame.setTitle(“设置字体详细信息”);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
私有类ListenerClass实现ActionListener
{   
已执行的公共无效操作(操作事件e)
{   
jcbSizes.getFontSize();
Font plainFont=新字体(“衬线”,Font.PLAIN,size);
Font boldFont=新字体(“衬线”,Font.BOLD,14);
字体斜体字体=新字体(“衬线”,Font.ITALIC,14);
Font boldItalicFont=新字体(“衬线”,Font.BOLD+Font.ITALIC,14);
if(jckbold.isSelected()&&jckbItalic.isSelected())
jtxtWelcome.setFont(粗体斜体字体);
else if(jckbold.isSelected())
jtxtWelcome.setFont(粗体);
else if(jckbItalic.isSelected())
jtxtWelcome.setFont(斜体字体);
else jtxtWelcome.setFont(纯字体);
}
}
}
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类测试扩展了JFrame
{
私人JPanel p1、p2;
私有JLabel jlbfontname,jlbfontsize;
私有JComboxJCbFonts,jcbSizes;
私人JTextArea jtxtWelcome;
私有JCheckBox jckbold,jckitalic;
公开考试()
{
p1=新的JPanel();
jlblFontName=新的JLabel(“字体名称”);
GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
字符串[]fontNames=e.getAvailableFontFamilyNames();
jcbFonts=新的JComboBox(fontNames);
jlblFontSize=新的JLabel(“字体大小”);//添加第二个JLabel
jcbSizes=new JComboBox();//创建第二个JComboBox
对于(int i=1;i<101;i++)//使用字体大小为1-100的数组填充JComboBox
{
jcbSizes.addItem(i);
}
p1.add(jlblFontName);//将所有4个组件添加到p1
p1.添加(jcbonts);
p1.添加(jlblFontSize);
p1.添加(jcbSizes);
jtxtWelcome=newJTextArea(“欢迎使用Java”,3,20);//添加一个JTextArea
添加(欢迎使用);
p2=新建JPanel();//创建p2并添加JCheckbox
p2.添加(jckbold=新JCheckBox(“粗体”);
jckbold.set助记符('B');
p2.添加(jckbItalic=新的JCheckBox(“斜体”);
jckbItalic.set助记符('I');
添加(p1,BorderLayout.NORTH);
添加(p2,南部边界布局);
ListenerClass listener=新建ListenerClass();
jcbonts.addActionListener(listener);
jcbSizes.addActionListener(listener);
jckbold.addActionListener(listener);
jckitalic.addActionListener(listener);
}
公共静态void main(字符串[]args)
{
测试框架=新测试();
frame.setTitle(“设置字体详细信息”);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
私有类ListenerClass实现ActionListener
{   
已执行的公共无效操作(操作事件e)
{   
//
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends JFrame 
{
    private JPanel p1, p2;
    private JLabel jlblFontName, jlblFontSize;
    private JComboBox jcbFonts, jcbSizes;
    private JTextArea jtxtWelcome;
    private JCheckBox  jckbBold, jckbItalic;

    public Test()                                                              
    {
    p1 = new JPanel();
    jlblFontName = new JLabel("Font Name");                                               

    GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();   
    String[] fontNames = e.getAvailableFontFamilyNames();                                 
    jcbFonts = new JComboBox(fontNames);                                                      

    jlblFontSize = new JLabel("Font Size");                                               // add 2nd JLabel

    jcbSizes = new JComboBox();                                                               // create 2nd JComboBox
    for(int i = 1; i < 101; i ++)                                                                 // populate JComboBox with array of font sizes 1-100
    {
        jcbSizes.addItem(i);
    }

    p1.add(jlblFontName);                                                                         // add all 4 components to p1
    p1.add(jcbFonts);
    p1.add(jlblFontSize);
    p1.add(jcbSizes);

    jtxtWelcome = new JTextArea("Welcome to Java", 3, 20);                            // add a JTextArea
    add(jtxtWelcome);

    p2 = new JPanel();                                                                            // create p2 & add JCheckBoxes
    p2.add(jckbBold = new JCheckBox("Bold"));
    jckbBold.setMnemonic('B');
    p2.add(jckbItalic = new JCheckBox("Italic"));
    jckbItalic.setMnemonic('I');

    add(p1,BorderLayout.NORTH);
    add(p2,BorderLayout.SOUTH);

    ListenerClass listener = new ListenerClass();
    jcbFonts.addActionListener(listener);
    jcbSizes.addActionListener(listener);
    jckbBold.addActionListener(listener);
    jckbItalic.addActionListener(listener);
    }

    public static void main(String[] args) 
    {
   Test frame = new Test();
   frame.setTitle("Set Font Details");
   frame.pack();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setLocationRelativeTo(null);    
   frame.setVisible(true);
}

private class ListenerClass implements ActionListener
{   
    public void actionPerformed(ActionEvent e)
    {   
        //jcbSizes.getFontSize();

        Font plainFont = new Font("serif", Font.PLAIN, Integer.parseInt(jcbSizes.getSelectedItem().toString()));
        Font boldFont = new Font("serif", Font.BOLD, 14);
        Font italicFont = new Font("serif", Font.ITALIC, 14);
        Font boldItalicFont = new Font("serif", Font.BOLD + Font.ITALIC, 14);

        if (jckbBold.isSelected() && jckbItalic.isSelected()) 
            jtxtWelcome.setFont(boldItalicFont);

        else if (jckbBold.isSelected())
            jtxtWelcome.setFont(boldFont);

        else if (jckbItalic.isSelected())
            jtxtWelcome.setFont(italicFont);

        else jtxtWelcome.setFont(plainFont);

    }
}
}
int size = (Integer)jcbSizes.getSelectedItem();
int size = (Integer) jcbSizes.getSelectedItem();
else {

    // jcbFonts.getSelectedItem().toString()
    // gets font string selected in font combobox
    // -------------------------------------
    // jcbSizes.getSelectedIndex())
    // get font size selected in size combobox

    jtxtWelcome.setFont(new Font(jcbFonts.getSelectedItem()
                    .toString(), Font.PLAIN, jcbSizes.getSelectedIndex()));

    System.out.println("Font Name: " + jcbFonts.getSelectedItem() 
                + " Font Size:" + jcbSizes.getSelectedIndex());
}