Java Can';t使用JComboBox更改字体
我试图通过使用JComboBox来更改JTextField的字体。问题是,当我尝试运行程序时,它工作正常,但现在当我尝试更改程序中的字体时,我会遇到大量错误。代码如下:Java Can';t使用JComboBox更改字体,java,Java,我试图通过使用JComboBox来更改JTextField的字体。问题是,当我尝试运行程序时,它工作正常,但现在当我尝试更改程序中的字体时,我会遇到大量错误。代码如下: JTextField myJTextField = new JTextField ("This text will be changed!", 20); myJTextField.setEditable(false); add(myJTextField); Font font = new Fon
JTextField myJTextField = new JTextField ("This text will be changed!", 20);
myJTextField.setEditable(false);
add(myJTextField);
Font font = new Font ("Serif", Font.PLAIN, 14);
Font font1 = new Font ("Serif", Font.BOLD, 14);
Font font2 = new Font ("Serif", Font.ITALIC, 14);
Font myFonts [] = {font ,font1, font2};
myBox1 = new JComboBox (myFonts);
myBox1.addItemListener (new ItemListener () {
public void itemStateChanged (ItemEvent e) {
Font myFonts [] = {font ,font1, font2};
int array [] = {0,1,2};
if (e.getStateChange() == ItemEvent.SELECTED)
myFonts [0] = new Font ("Serif", Font.PLAIN, 14);
else if (e.getStateChange() == ItemEvent.SELECTED)
myFonts [1] = new Font ("Serif", Font.BOLD, 14);
else if (e.getStateChange() == ItemEvent.SELECTED)
myFonts [2] = new Font ("Serif", Font.ITALIC, 14);
myJTextField.setFont(myFonts[array.length]);
}
}); add(myBox1);
任何帮助都将不胜感激。如果我没有犯错,每种情况都是一样的。而
myFonts[array.length]
将产生一个界限索引
myBox1.addItemListener (new ItemListener() {
@Override
public void itemStateChanged (ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Font font = (Font) e.getItem();
myJTextField.setFont(font);
}
}
};
不能将
Font
对象直接传递到JComboBox构造函数中。查看如何使用setRenderer()
并创建自己的渲染器类,如以下示例所示:
如果您遇到大量错误,需要我们的帮助,您可以发布其中一些错误,不是吗?请阅读本节,以获取有关提问的更多帮助。另外,考虑花一些时间来创建和发布一个可以帮助我们更好地理解你的问题的代码。<代码> MyjTeXField.StStand(MyFiTs[Salp.Stime]);<代码>不能这样做,因为这样会使索引超出范围,因为数组的长度与myFonts的长度相同,并且数组在Java中是基于零的索引