天天看點

圖形使用者界面(一)GUI元素之複選框

這個程式顯示兩個複選框和一個标簽。通過改變複選框的狀态,進而改變标簽上文本的格式,是按粗體、斜體、還是粗斜體的方式顯示字型。

StyleOptions程式中的GUI設計包括在StyleOptionsPanel類中。複選框由JCheckBox類來表示。當複選框從一種狀态變為另一種狀态時,産生ItemListener事件,ItemListener接口包含單一的方法itemStateChanged。

程式中還用到了Font類。一個Font對象有字型名,字型樣式和字型大小組成。

當改變一個複選框的狀态時,監聽器的itemStateChanged方法輪流判定每個複選框,這個方法傳回一個布爾值。

實際效果如圖:

StyleOptions.java

import javax.swing.JFrame;

public class StyleOptions {

 public static void main(String[] args) {

  JFrame frame = new JFrame("Style Options");

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.getContentPane().add(new StyleOptionsPanel());

  frame.pack();

  frame.setVisible(true);

 }

}

StyleOptionsPanel.java

package JCheckBox;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.JCheckBox;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class StyleOptionsPanel extends JPanel{

 private JLabel saying;

 private JCheckBox bold, italic;

 public StyleOptionsPanel(){

  saying = new JLabel("Say it with style");

  saying.setFont(new Font("Helvetica", Font.PLAIN, 36));

  bold = new JCheckBox("Bold");

  bold.setBackground(Color.green);

  italic = new JCheckBox("Italic");

  italic.setBackground(Color.green);

  StyleListener listener = new StyleListener();

  bold.addItemListener(listener);

  italic.addItemListener(listener);

  add(saying);

  add(bold);

  add(italic);

  setBackground(Color.green);

  setPreferredSize(new Dimension(300, 100));

 }

 public class StyleListener implements ItemListener {

  public void itemStateChanged(ItemEvent arg0) {

   int style = Font.PLAIN;

   if(bold.isSelected())

    style = Font.BOLD;

   if(italic.isSelected())

    style = Font.ITALIC;

   saying.setFont(new Font("Helvetica",style, 36));

  }

 }

}

這裡有個缺陷,就是不能同時顯示粗斜體,如有人知道,麻煩告訴一下,感激不盡。