⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inttextbean.java

📁 java的五个源代码
💻 JAVA
字号:
/**
 * @version 1.20 1999-09-26
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;

public class IntTextBean extends JTextField
   implements Serializable
{  public IntTextBean()
   {  this(0, 10);
   }

   public IntTextBean(int defval, int size)
   {  super("" + defval, size);
      addFocusListener(new FocusListener()
         {  public void focusGained(FocusEvent event)
            {  if (!event.isTemporary())
               {  lastValue = getValue();
               }
            }
            public void focusLost(FocusEvent event)
            {  if (!event.isTemporary())
               {  editComplete();
               }
            }
         });
   }

   public void editComplete()
   {  Integer oldValue = new Integer(lastValue);
      Integer newValue = new Integer(getValue());
      try
      {  fireVetoableChange("value", oldValue, newValue);
         // survived, therefore no veto
         firePropertyChange("value", oldValue, newValue);
      }
      catch(PropertyVetoException e)
      {  // someone didn't like it
         JOptionPane.showMessageDialog(this, "" + e,
            "Input Error", JOptionPane.WARNING_MESSAGE);
         setText("" + lastValue);
         requestFocus();
            // doesn't work in all JDK versions--see bug #4128659
      }
   }

   public int getValue()
   {  try
      {  return Integer.parseInt(getText());
      }
      catch (NumberFormatException exception)
      {  return 0;
      }
   }

   public void setValue(int v) throws PropertyVetoException
   {  Integer oldValue = new Integer(getValue());
      Integer newValue = new Integer(v);
      fireVetoableChange("value", oldValue, newValue);
      // survived, therefore no veto
      setText("" + v);
      firePropertyChange("value", oldValue, newValue);
   }

   protected Document createDefaultModel()
   {  return new IntTextDocument();
   }

   public Dimension getMinimumSize()
   {  return new Dimension(XMINSIZE, YMINSIZE);
   }

   private int lastValue;
   private static final int XMINSIZE = 50;
   private static final int YMINSIZE = 20;
}

class IntTextDocument extends PlainDocument
{  public void insertString(int offs, String str,
      AttributeSet a)
      throws BadLocationException
   {  if (str == null) return;
      String oldString = getText(0, getLength());
      String newString = oldString.substring(0, offs)
         + str + oldString.substring(offs);
      try
      {  Integer.parseInt(newString + "0");
         super.insertString(offs, str, a);
      }
      catch(NumberFormatException e)
      {
      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -