2012-12-31 125 views
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 
+0

那你試試?你有什麼麻煩? – SLaks

+1

請正確縮進您的代碼。 – SLaks

+1

首先閱讀如何將[菜單](http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html)添加到JFrame。如果你有問題,然後問,我們會提供幫助。 –

回答

1

您需要添加ActionListnerFontBox (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); 
    } 
}); 
3

而不是給你解決顧左右而言他,這裏有一些準則,以幫助您:

  • 再講一個ActionListener的概念(或即使是Action),也可以在JComboBoxfontbox中加一個。
  • 爲您的Font樣式創建一個JComboBox自定義對象,以包裝顯示的文本和要使用的整數常量(提示)。作爲參考,請參閱example
  • 然後在您的ActionListener中,讀取從getSelectedItem返回的值,並相應地使用來自對象的樣式常量調用JTextField.setFont