CheckBox.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:4k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit;
  26. import com.sun.lwuit.plaf.UIManager;
  27. import com.sun.lwuit.geom.*;
  28. import com.sun.lwuit.plaf.DefaultLookAndFeel;
  29. import com.sun.lwuit.plaf.LookAndFeel;
  30. /**
  31.  * Checkbox is a button that can be selected or deselected, and which displays
  32.  * its state to the user.
  33.  * 
  34.  * @author Chen Fishbein
  35.  */
  36. public class CheckBox extends Button {
  37.     
  38.     private boolean selected= false;
  39.     
  40.     /**
  41.      * Constructs a checkbox with the given text
  42.      * 
  43.      * @param text to display next to the checkbox
  44.      */
  45.     public CheckBox(String text) {
  46.         this(text, null);
  47.     }
  48.     /**
  49.      * Constructs a checkbox with no text
  50.      */
  51.     public CheckBox() {
  52.         this("");
  53.     }
  54.     
  55.     /**
  56.      * Constructs a checkbox with the given icon
  57.      * 
  58.      * @param icon icon to display next to the checkbox
  59.      */
  60.     public CheckBox(Image icon) {
  61.         this("", icon);
  62.     }
  63.     /**
  64.      * Constructs a checkbox with the given text and icon
  65.      * 
  66.      * @param text to display next to the checkbox
  67.      * @param icon icon to display next to the text
  68.      */
  69.     public CheckBox(String text,Image icon) {
  70.         super(text,icon);
  71.         setUIID("CheckBox");
  72.     }
  73.     
  74.     
  75.     /**
  76.      * Return true if the checkbox is selected
  77.      * 
  78.      * @return true if the checkbox is selected
  79.      */
  80.     public boolean isSelected() {
  81.         return selected;
  82.     }
  83.     
  84.     /**
  85.      * Selects the current checkbox
  86.      * 
  87.      * @param selected value for selection
  88.      */
  89.     public void setSelected(boolean selected) {
  90.         this.selected = selected;
  91.         repaint();
  92.     }
  93.     
  94.     /**
  95.      * @inheritDoc
  96.      */
  97.     void released() {
  98.         if(isEnabled()){
  99.             selected = !isSelected();
  100.         }
  101.         super.released();
  102.     }
  103.     
  104.     /**
  105.      * @inheritDoc
  106.      */
  107.     public void paint(Graphics g) {
  108.         UIManager.getInstance().getLookAndFeel().drawCheckBox(g, this);
  109.     }
  110.     /**
  111.      * @inheritDoc
  112.      */
  113.     protected Dimension calcPreferredSize(){
  114.         return UIManager.getInstance().getLookAndFeel().getCheckBoxPreferredSize(this);
  115.     }
  116.     /**
  117.      * @inheritDoc
  118.      */
  119.     protected String paramString() {
  120.         return super.paramString() + ", selected = " +selected;
  121.     }
  122.     int getAvaliableSpaceForText() {
  123.         LookAndFeel l = UIManager.getInstance().getLookAndFeel();
  124.         if(l instanceof DefaultLookAndFeel) {
  125.             Image[] rButtonImages = ((DefaultLookAndFeel)l).getCheckBoxImages();
  126.             if (rButtonImages != null) {
  127.                 int index = isSelected() ? 1 : 0;
  128.                 return super.getAvaliableSpaceForText() - rButtonImages[index].getWidth();
  129.             }
  130.         }
  131.         return super.getAvaliableSpaceForText() - (getHeight() + getGap());
  132.     }
  133. }