我有这样的代码,当用户点击其中一种字体“粗体或斜体......”时,文本应该会改变。我无法添加将执行此操作的动作侦听器:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class question4 extends JFrame {
private JTextField textField;
private JComboBox fontbox;
private String names[]={ "Bold","Italic","Plain"};
private Icon icons[]={};
public question4()
{
super("JcheckBox");
setLayout(new FlowLayout());//set frame
fontbox = new JComboBox(names);//set jcobobox
fontbox.setMaximumRowCount(3);
//listener
add(fontbox);
//add the text content
textField = new JTextField ("Hello World", 20);
textField.setFont(new Font("Calibri", Font.BOLD,18));//set the text font and size
add(textField);//add textfield to jframe
}
public static void main(String args[])
{
question4 obj = new question4();//create object
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.setSize(700,400);
obj.setVisible(true);
}//end main
}//end class
答案 0 :(得分:3)
而不是直接向您提供解决方案,以下是一些可以帮助您的指南:
ActionListener
(甚至是Action)的概念,特别是在JComboBox
fontbox
添加一个。{/ li>
JComboBox
样式创建一个Font
自定义对象,以便包含显示的文本和要使用的整数常量(提示)。作为指南,请参阅此example ActionListener
中,阅读getSelectedItem返回的值,并使用对象中的样式常量相应地调用JTextField.setFont
。答案 1 :(得分:1)
您需要将ActionListner
添加到FontBox (JcomboBox)
,例如:
private void fontboxActionPerformed(java.awt.event.ActionEvent evt) {
String font = (String) fontbox.getSelectedItem();
if(font=="Bold")
textField.setFont(new Font("Calibri", Font.BOLD, 18));
else if(font == "Italic")
textField.setFont(new Font("Calibri", Font.ITALIC, 18));
else if(font == "Plain")
textField.setFont(new Font("Calibri", Font.PLAIN, 18));
}
并在您的代码中调用此方法,如下所示:
fontbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fontboxActionPerformed(evt);
}
});