我试图通过使用JComboBox来更改我的JTextField的字体。问题是当我尝试运行该程序时,它工作正常,但现在当我尝试更改程序中的字体时,我得到了大量的错误。这是代码:
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);
任何帮助都将非常感激。
答案 0 :(得分:1)
如果我没有犯错,每一个条件都一样。 myFonts[array.length]
将产生一个IndexOutOf Bounds。
myBox1.addItemListener (new ItemListener() {
@Override
public void itemStateChanged (ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Font font = (Font) e.getItem();
myJTextField.setFont(font);
}
}
};
答案 1 :(得分:0)
您无法将Font
个对象直接传递给JComboBox构造函数。请查看使用setRenderer()
并创建您自己的Renderer类,如下例所示: