根据选定的JComboBox项更改JTextArea颜色

时间:2011-07-15 16:19:12

标签: java swing

与基本主线程一起,这将显示一个带有句子的窗口,并在选择下拉菜单中的某个内容后立即将字体更改为粗体。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gui extends JFrame {

  private JComboBox box;
  private JTextField tf;
  private static String [] filename = {"button.png", "x.png"};

  public Gui(){
    super("The title is");
    setLayout(new FlowLayout());
    box = new JComboBox(filename);
    tf = new JTextField("This is a sentence", 14);

    box.addItemListener( new ItemListener() {
      public void itemStateChanged(ItemEvent event) {
        if(event.getStateChange()==ItemEvent.SELECTED) {
          tf.setFont(new Font("Serif", Font.BOLD, 14));
        }
      } 
    });

    add(box);
    add(tf);
  }
}   

如果我从下拉菜单中选择其他成员,有没有办法让它改回来?

3 个答案:

答案 0 :(得分:2)

尝试:

tf.setFont(new Font("Serif", Font.PLAIN, 14));

为了选中项目,请使用box.getSelectedItem()box.getSelectedIndex()

例如:

public void itemStateChanged(ItemEvent event){
    if(event.getStateChange()==ItemEvent.SELECTED){
        if (box.getSelectedIndex()==0) 
            tf.setFont(new Font("Serif", Font.BOLD, 14));  //first item selected
        else 
            tf.setFont(new Font("Serif", Font.PLAIN, 14)); //second item selected
    }
}

答案 1 :(得分:0)

如何使用getFont查看您拥有的内容,测试它,并根据您的测试更改您想要的内容?

答案 2 :(得分:0)

box.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
         tf.setFont(new Font("Serif", Font.BOLD, 14));

     }
});

试试这个!