3

ユーザーが「太字または斜体...」のフォントの1つをクリックすると、テキストが変わるはずのこのコードがあります。それを行うアクションリスナーを追加できませんでした:

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

解決策を完全に提供するのではなく、役立つガイドラインを次に示します。

  • ActionListener(またはActionでさえも)の概念を再検討し、具体的には に 1 つ追加しJComboBox fontboxます。
  • 表示されるテキストと使用される整数定数 (ヒント) の両方をラップするように、スタイルのJComboBoxカスタム オブジェクトを作成します。Fontガイドとして、この例を参照してください
  • 次に、getSelectedItemActionListenerから返された値を読み取り、それに応じてオブジェクトのスタイル定数を使用して呼び出します。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 に答える