程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> [JAVA100例]012、復合框

[JAVA100例]012、復合框

編輯:JAVA編程入門知識

  

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 * <p>Title: 檢查盒演示</p>
 * <p>Description: 選擇不同的選擇框顯示不同的圖片</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Filename: CheckBoxDemo.java</p>
 * @version 1.0
 */
public class CheckBoxDemo extends JPanel
              implements ItemListener {
   JCheckBox chinButton;
   JCheckBox glassesButton;
   JCheckBox hairButton;
   JCheckBox teethButton;
/*
   * 有四個檢查盒,分別對應下巴、眼鏡、頭發和牙齒
   * 圖片不是拼出來的,而是根據檢查盒選擇拼寫圖片文件名
   * 圖片文件名的定義格式為"geek-XXXX.gif"
   * 其中 XXXX 根據檢查盒的不同選擇,而不同。它的格式如下:
----       //沒有選擇
c---       //一個選擇
    -g--
    --h-
    ---t
cg--       //兩個選擇
    c-h-
    c--t
    -gh-
    -g-t
    --ht
-ght       //三個選擇
    c-ht
    cg-t
    cgh-
cght       //所有都選
   */
StringBuffer choices;
   JLabel pictureLabel;
public CheckBoxDemo() {
     super(new BorderLayout());
//創建檢查盒
     chinButton = new JCheckBox("下巴(c)");
     chinButton.setMnemonic(KeyEvent.VK_C);
     chinButton.setSelected(true);
glassesButton = new JCheckBox("眼鏡(g)");
     glassesButton.setMnemonic(KeyEvent.VK_G);
     glassesButton.setSelected(true);
hairButton = new JCheckBox("頭發(h)");
     hairButton.setMnemonic(KeyEvent.VK_H);
     hairButton.setSelected(true);
teethButton = new JCheckBox("牙齒(t)");
     teethButton.setMnemonic(KeyEvent.VK_T);
     teethButton.setSelected(true);
//給檢查盒添加監聽
     chinButton.addItemListener(this);
     glassesButton.addItemListener(this);
     hairButton.addItemListener(this);
     teethButton.addItemListener(this);
choices = new StringBuffer("cght");
//放置一個帶圖片的標簽
     pictureLabel = new JLabel();
     pictureLabel.setFont(pictureLabel.getFont().deriveFont(Font.ITALIC));
     updatePicture();
//將檢查盒放置到面版中
     JPanel checkPanel = new JPanel(new GridLayout(0, 1));
     checkPanel.add(chinButton);
     checkPanel.add(glassesButton);
     checkPanel.add(hairButton);
     checkPanel.add(teethButton);
add(checkPanel, BorderLayout.LINE_START);
     add(pictureLabel, BorderLayout.CENTER);
     setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
   }
/**
 *<br>方法說明:監聽檢查盒事件,拼湊圖片的文件名XXXX部分
 *<br>輸入參數:
 *<br>返回類型:
 */
   public void itemStateChanged(ItemEvent e) {
     int index = 0;
     char c = ´-´;
     Object source = e.getItemSelectable();
if (source == chinButton) {
       index = 0;
       c = ´c´;
     } else if (source == glassesButton) {
       index = 1;
       c = ´g´;
     } else if (source == hairButton) {
       index = 2;
       c = ´h´;
     } else if (source == teethButton) {
       index = 3;
       c = ´t´;
     }
     
     //取消選擇事件
     if (e.getStateChange() == ItemEvent.DESELECTED) {
       c = ´-´;
     }
//改變文件名字XXXX
     choices.setCharAt(index, c);
updatePicture();
   }
/**
 *<br>方法說明:繪制圖片
 *<br>輸入參數:
 *<br>返回類型:
 */
   protected void updatePicture() {
     //將得到的圖片制成圖標
     ImageIcon icon = createImageIcon(
                   "images/geek/geek-"
                   + choices.toString()
                   + ".gif");
     pictureLabel.setIcon(icon);
     pictureLabel.setToolTipText(choices.toString());
     if (icon == null) {
       pictureLabel.setText("沒有發現圖片");
     } else {
       pictureLabel.setText(null);
     }
   }
/**
 *<br>方法說明:獲取圖標
 *<br>輸入參數:String path 圖片路徑
 *<br>返回類型:ImageIcon對象
 */
   protected static ImageIcon createImageIcon(String path) {
     java.net.URL imgURL = CheckBoxDemo.class.getResource(path);
     if (imgURL != null) {
       return new ImageIcon(imgURL);
     } else {
       System.err.println("Couldn´t find file: " + path);
       return null;
     }
   }
/**
 *<br>方法說明:主方法
 *<br>輸入參數:
 *<br>返回類型:
 */
   public static void main(String s[]) {
     JFrame.setDefaultLookAndFeelDecorated(true);
//創建一個窗體,
     JFrame frame = new JFrame("CheckBoxDemo");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//創建一個面板
     JComponent newContentPane = new CheckBoxDemo();
     newContentPane.setOpaque(true);
     frame.setContentPane(newContentPane);
//顯示窗體
     frame.pack();
     frame.setVisible(true);
   }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved