2011年3月26日

<Java> JVA302-字體設定選擇器




/*
設定文字屬性,
1、建立選項鈕設定不同的對齊方式,但只能選取其中一種對齊方式。
2、建立核取方塊設定「粗體」或「斜體」。
3、建立下立選項設定字體大小

*/


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

public class JVA302 extends JFrame implements ItemListener

  {
  JTextField tf;
  JCheckBox boldBox, italicBox;
  int bold=Font.PLAIN, italic=Font.PLAIN;
  int align=JTextField.LEFT, fonts=14;

  private JRadioButton leftRadio, centerRadio, rightRadio;
  private ButtonGroup buttonGroup;

   //下拉選項
  private String name[] = {"14""16""18""20"};
  private JComboBox comboBox = new JComboBox(name);

  public JVA302()
    {
    super("字體設定選擇器");
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
    tf=new JTextField("Just a font Tester", 20);
    tf.setFont(new Font("Serif",Font.PLAIN,14));

   //選項鈕
/*
請在此處加上程式碼,您必須
1、設定核取方塊
*/

   buttonGroup = new ButtonGroup();
   leftRadio = new JRadioButton("靠左對齊",true);
   centerRadio = new JRadioButton("置中對齊");
   rightRadio = new JRadioButton("靠右對齊");
   buttonGroup.add(leftRadio);
   buttonGroup.add(centerRadio);
   buttonGroup.add(rightRadio);


   //核取方塊
/*
請在此處加上程式碼,您必須
1、設定核取方塊
*/

   boldBox = new JCheckBox("粗體");
   italicBox = new JCheckBox("斜體");

   //設定Listener
    addWindowListener(new MyListener());

    boldBox.addItemListener(this);
    italicBox.addItemListener(this);

    leftRadio.addItemListener(this);
    centerRadio.addItemListener(this);
    rightRadio.addItemListener(this);

    comboBox.setMaximumRowCount(3);
    comboBox.addItemListener(this);

   //加入介面
/*
請在此處加上程式碼,您必須
1、顯示文字欄位
2、顯示選項鈕
3、顯示核取方塊
4、顯示下拉選單
*/

   JPanel jpRadio = new JPanel();
   jpRadio.setLayout(new FlowLayout(FlowLayout.CENTER));
   JPanel jpCheck = new JPanel();
   jpCheck.setLayout(new FlowLayout(FlowLayout.CENTER));

   c.add(tf);
   jpRadio.add(leftRadio);
   jpRadio.add(centerRadio);
   jpRadio.add(rightRadio);
   jpCheck.add(boldBox);
   jpCheck.add(italicBox);
   jpCheck.add(comboBox);

   c.add(jpRadio);
   c.add(jpCheck);
   //設定大小,顯示JFrame
    setSize(280, 150);
    setVisible(true);
    }

   //處理程式關閉
  class MyListener extends WindowAdapter
  {
    public void windowClosing(WindowEvent e)
      {
        System.exit(1);
      }
  }


  public void itemStateChanged(ItemEvent e)
    {
   /*
請在此處加上程式碼,您必須
1、設定粗體、斜體處理程式
2、設定對齊處理程式
3、設定字體大小處理程式
4、依不同的設定值顯示文字
*/


      if(e.getSource()==leftRadio){
         align = JTextField.LEFT;
      }else if(e.getSource() == centerRadio){
         align = JTextField.CENTER;
      }else if(e.getSource() == rightRadio){
         align = JTextField.RIGHT;
      }

      if(e.getSource() == boldBox){
         if(e.getStateChange() == ItemEvent.SELECTED){
            bold = Font.BOLD;
         }else if(e.getStateChange() == ItemEvent.DESELECTED){
            bold = Font.PLAIN;
         }
      }else if(e.getSource() == italicBox){
         if(e.getStateChange() == ItemEvent.SELECTED){
            italic = Font.ITALIC;
         }else if(e.getStateChange() == ItemEvent.DESELECTED){
            italic = Font.PLAIN;
         }
      }

      if(e.getSource() == comboBox){
         fonts = Integer.parseInt((String)comboBox.getSelectedItem());
      }
      tf.setHorizontalAlignment(align);
      tf.setFont(new Font("Serif", (bold + italic) , fonts));
    }
  public static void main( String args[] )
    {
      new JVA302();
    }
  }

相關函式:
Font(String name, int style , int size)

參考網站:
Java A+

沒有留言:

張貼留言