2011-07-15 49 views
1

除了基本主線程外,還將顯示帶有句子的窗口,並且只要選擇下拉菜單中的某個內容,就會將字體更改爲粗體。根據選定的JComboBox項目更改JTextArea顏色

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); 
    } 
} 

如果我從下拉菜單中選擇其他成員,是否有任何方法可以讓它恢復原狀?

+0

是的,你必須讀取選定的值並提供邏輯來確定根據所選值發生的情況。 –

+0

帖子主題標題應該反映問題。因爲1)你已經添加了java標籤2)很顯然,你是一個初學者&3)SO主要是爲了提出問題。標題'java初學者問題'提供絕對沒有價值。 –

+0

BTW +1添加代碼。 –

回答

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 
    } 
} 
0

如何使用的getFont,看你有什麼,測試,並根據測試改變你想要什麼?

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

    } 
}); 

試試這個!

+0

由於組合。已經有一個ItemListener(這就是形成一個解決方案所需要的),但是我沒有看到這個建議爲解決OP的陳述問題增加了什麼。 –

相關問題