Java 无法更改字体&;使用jComboxes的JTextArea中的字体大小
我已经创建了一个JFrame,用户可以在其中编辑JTextArea中的文本。有一个JComboBox用于更改字体类型,一个JComboBox用于更改字体大小,还有两个JCheckbox用于使文本粗体和斜体。我已经完成了JCheckbox,但是我不知道如何通过使用JComobox来允许更改字体和字体大小。任何帮助都将不胜感激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
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());
}