3

我有这段代码,当用户单击其中一种字体“粗体或斜体......”时,文本应该会改变。我无法添加将执行此操作的操作侦听器:

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
4

2 回答 2

3

这里有一些指导方针可以帮助您,而不是直接为您提供解决方案:

  • 重新审视 an ActionListener(甚至是Action)的概念,特别是在JComboBox fontbox.
  • 为您的样式创建一个JComboBox自定义对象,Font以便包装显示的文本和要使用的整数常量(提示)。作为指南,请参阅此示例
  • 然后在您的 中ActionListener,读取从getSelectedItem返回的值,并JTextField.setFont使用对象中的样式常量相应地调用。
于 2012-12-31T17:03:11.707 回答
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);
    }
});
于 2012-12-31T18:43:29.497 回答