Hey,buddy:What's up?

          Happy&Optimistic&Effective

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            14 Posts :: 1 Stories :: 0 Comments :: 0 Trackbacks

          2005年10月25日 #

          本程序改變自網(wǎng)上的一個(gè)datapicker,沒有用javax包,而是基于java.awt包。you can use it in your applet.共四個(gè)文件。

          //1.AbsoluteConstraints.java

          import java.awt.Dimension;
          import java.awt.Point;

          public class AbsoluteConstraints
          ??? implements java.io.Serializable {
          ? static final long serialVersionUID = 5261460716622152494L;
          ? public int x;
          ? public int y;
          ? public int width = -1;
          ? public int height = -1;
          ? public AbsoluteConstraints(Point pos) {
          ??? this(pos.x, pos.y);
          ? }

          ? public AbsoluteConstraints(int x, int y) {
          ??? this.x = x;
          ??? this.y = y;
          ? }

          ? public AbsoluteConstraints(Point pos, Dimension size) {
          ??? this.x = pos.x;
          ??? this.y = pos.y;
          ??? if (size != null) {
          ????? this.width = size.width;
          ????? this.height = size.height;
          ??? }
          ? }

          ? public AbsoluteConstraints(int x, int y, int width, int height) {
          ??? this.x = x;
          ??? this.y = y;
          ??? this.width = width;
          ??? this.height = height;
          ? }

          ? public int getX() {
          ??? return x;
          ? }

          ? public int getY() {
          ??? return y;
          ? }

          ? public int getWidth() {
          ??? return width;
          ? }

          ? public int getHeight() {
          ??? return height;
          ? }

          ? public String toString() {
          ??? return super.toString() + " [x=" + x + ", y=" + y + ", width=" + width +
          ??????? ", height=" + height + "]";
          ? }
          }



          //2.import java.awt.*;

          public class AbsoluteLayout
          ??? implements LayoutManager2, java.io.Serializable {
          ? static final long
          ????? serialVersionUID = -1919857869177070440L;
          ? protected java.util.Hashtable constraints = new java.util.Hashtable();
          ? public
          ????? void addLayoutComponent(String name, Component comp) {
          ??? throw new IllegalArgumentException();
          ? }

          ? public void
          ????? removeLayoutComponent(Component comp) {
          ??? constraints.remove(comp);
          ? }

          ? public Dimension preferredLayoutSize
          ????? (Container parent) {
          ??? int maxWidth = 0;
          ??? int maxHeight = 0;
          ??? for (java.util.Enumeration e =
          ???????? constraints.keys(); e.hasMoreElements(); ) {
          ????? Component comp = (Component) e.nextElement();
          ????? AbsoluteConstraints
          ????????? ac = (AbsoluteConstraints) constraints.get(comp);
          ????? Dimension size = comp.getPreferredSize();
          ????? int width =
          ????????? ac.getWidth();
          ????? if (width == -1)
          ??????? width = size.width;
          ????? int height = ac.getHeight();
          ????? if (height == -1)
          ??????? height = size.height;
          ????? if (ac.x + width > maxWidth)
          ??????? maxWidth = ac.x + width;
          ????? if (ac.y + height >
          ????????? maxHeight)
          ??????? maxHeight = ac.y + height;
          ??? }
          ??? return new Dimension(maxWidth, maxHeight);
          ? }

          ? public
          ????? Dimension minimumLayoutSize(Container parent) {
          ??? int maxWidth = 0;
          ??? int maxHeight = 0;
          ??? for
          ??????? (java.util.Enumeration e = constraints.keys(); e.hasMoreElements(); ) {
          ????? Component comp = (Component) e.nextElement();
          ????? AbsoluteConstraints ac = (AbsoluteConstraints) constraints.get(comp);
          ????? Dimension size = comp.getMinimumSize();
          ????? int width = ac.getWidth();
          ????? if (width == -1)
          ??????? width = size.width;
          ????? int height = ac.getHeight();
          ????? if (height == -1)
          ??????? height = size.height;
          ????? if (ac.x + width > maxWidth)
          ??????? maxWidth = ac.x + width;
          ????? if
          ????????? (ac.y + height > maxHeight)
          ??????? maxHeight = ac.y + height;
          ??? }
          ??? return new Dimension(maxWidth, maxHeight);
          ? }

          ? public void layoutContainer(Container parent) {
          ??? for (java.util.Enumeration e = constraints.keys();
          ???????? e.hasMoreElements(); ) {
          ????? Component comp = (Component) e.nextElement();
          ????? AbsoluteConstraints ac =
          ????????? (AbsoluteConstraints) constraints.get(comp);
          ????? Dimension size = comp.getPreferredSize();
          ????? int width = ac.getWidth();
          ????? if (width == -1)
          ??????? width = size.width;
          ????? int height = ac.getHeight();
          ????? if (height == -1)
          ??????? height = size.height;
          ????? comp.setBounds(ac.x, ac.y, width, height);
          ??? }
          ? }

          ? public void addLayoutComponent
          ????? (Component comp, Object constr) {
          ??? if (! (constr instanceof AbsoluteConstraints))
          ????? throw new
          ????????? IllegalArgumentException();
          ??? constraints.put(comp, constr);
          ? }

          ? public Dimension maximumLayoutSize(Container
          ???????????????????????????????????? target) {
          ??? return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
          ? }

          ? public float getLayoutAlignmentX
          ????? (Container target) {
          ??? return 0;
          ? }

          ? public float getLayoutAlignmentY(Container target) {
          ??? return 0;
          ? }

          ? public void invalidateLayout(Container target) {}
          }

          // 3DateField.java

          import java.awt.BorderLayout;
          import java.awt.Color;
          import java.awt.Insets;
          import java.awt.Point;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import java.awt.event.ComponentAdapter;
          import java.awt.event.ComponentEvent;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;
          import java.awt.event.MouseMotionAdapter;
          import java.net.URL;
          import java.text.DateFormat;
          import java.text.ParseException;
          import java.util.Date;
          import java.awt.*;

          public final class DateField
          ??? extends Panel {
          ? private static final long serialVersionUID = 1L;
          ? private final TextField dateText = new TextField(12);
          ? private final Button dropdownButton = new Button();
          ? private DatePicker dp;
          ? private Dialog dlg;
          ? Point origin = new Point();
          ? final class Listener
          ????? extends ComponentAdapter {
          ??? public void componentHidden(final ComponentEvent evt) {
          ????? final Date dt = ( (DatePicker) evt.getSource()).getDate();
          ????? if (null != dt)
          ??????? dateText.setText(dateToString(dt));
          ????? dlg.dispose();
          ??? }
          ? }

          ? public DateField() {
          ??? super();
          ??? init();
          ? }

          ? public DateField(final Date initialDate) {
          ??? super();
          ??? init();
          ??? dateText.setText(dateToString(initialDate));
          ? }

          ? public Date getDate() {
          ??? return stringToDate(dateText.getText());
          ? }

          ? public void setDate(Date date) {
          ??? String v = dateToString(date);
          ??? if (v == null) {
          ????? v = "";
          ??? }
          ??? dateText.setText(v);
          ? }

          ? private void init() {
          ??? setLayout(new BorderLayout());
          ??? dateText.setText("");
          ??? dateText.setEditable(false);
          ??? dateText.setBackground(new Color(255, 255, 255));
          ??? add(dateText, BorderLayout.CENTER);
          ??? dropdownButton.setLabel("選擇");
          ??? dropdownButton.setBackground(Color.yellow);
          ??? dropdownButton.addActionListener(new ActionListener() {
          ????? public void actionPerformed(final ActionEvent evt) {
          ??????? onButtonClick(evt);
          ????? }
          ??? });
          ??? add(dropdownButton, BorderLayout.EAST);
          ? }

          ? private void onButtonClick(final java.awt.event.ActionEvent evt) {
          ??? if ("".equals(dateText.getText()))
          ????? dp = new DatePicker();
          ??? else
          ????? dp = new DatePicker(stringToDate(dateText.getText()));
          ??? dp.addComponentListener(new Listener());
          ??? final Point p = dateText.getLocationOnScreen();
          ??? p.setLocation(p.getX(), p.getY() - 1 + dateText.getSize().getHeight());
          ??? dlg = new Dialog(new Frame(), true);
          ??? dlg.addMouseListener(new MouseAdapter() {
          ????? public void mousePressed(MouseEvent e) {
          ??????? origin.x = e.getX();
          ??????? origin.y = e.getY();
          ????? }
          ??? });
          ??? dlg.addMouseMotionListener(new MouseMotionAdapter() {
          ????? public void mouseDragged(MouseEvent e) {
          ??????? Point p = dlg.getLocation();
          ??????? dlg.setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y);
          ????? }
          ??? });
          ??? dlg.setLocation(p);
          ??? dlg.setResizable(false);
          ??? dlg.setUndecorated(true);
          ??? dlg.add(dp);
          ??? dlg.pack();
          ??? dlg.setVisible(true);
          ? }

          ? private static String dateToString(final Date dt) {
          ??? if (null != dt)
          ????? return DateFormat.getDateInstance(DateFormat.LONG).format(dt);
          ??? return null;
          ? }

          ? private static Date stringToDate(final String s) {
          ??? try {
          ????? return DateFormat.getDateInstance(DateFormat.LONG).parse(s);
          ??? }
          ??? catch (ParseException e) {
          ????? return null;
          ??? }
          ? }

          ? public static void main(String[] args) {
          ??? Dialog dlg = new Dialog(new Frame(), true);
          ??? DateField df = new DateField();
          ?? //dlg.getContentPane().add(df);
          ?? dlg.add(df);
          ??? dlg.pack();
          ??? dlg.setVisible(true);
          ??? System.out.println(df.getDate().toString());
          ??? System.exit(0);
          ? }
          }

          //4.DatePicker.java

          import java.awt.*;
          import java.awt.event.*;
          import java.util.GregorianCalendar;
          import java.util.Date;
          import java.util.Calendar;
          import java.text.DateFormat;
          import java.text.FieldPosition;
          /*
          import javax.swing.*;
          import javax.swing.plaf.BorderUIResource;
          */
          public final class DatePicker
          ??? extends Panel {
          ? private static final long serialVersionUID = 1L;
          ? private static final int startX = 10;
          ? private static final int startY = 60;
          ? private static final Font smallFont = new Font("Dialog", Font.PLAIN, 10);
          ? private static final Font largeFont = new Font("Dialog", Font.PLAIN, 12);
          ? private static final Insets insets = new Insets(2, 2, 2, 2);
          ? private static final Color highlight = Color.YELLOW;//new Color(255, 255, 204);
          ? private static final Color white = new Color(255, 255, 255);
          ? private static final Color gray = new Color(204, 204, 204);
          ? private Component selectedDay = null;
          ? private GregorianCalendar selectedDate = null;
          ? private GregorianCalendar originalDate = null;
          ? private boolean hideOnSelect = true;
          ? private final Button backButton = new Button();
          ? private final Label monthAndYear = new Label();
          ? private final Button forwardButton = new Button();
          ? private final Label[] dayHeadings = new Label[] {
          ????? new Label("日"),
          ????? new Label("一"),
          ????? new Label("二"),
          ????? new Label("三"),
          ????? new Label("四"),
          ????? new Label("五"),
          ????? new Label("六")};

          ? private final Label[][] daysInMonth = new Label[][] {
          ????? {
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label()}
          ????? , {
          ????? new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label()}
          ????? , {
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label()}
          ????? , {
          ????? new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label()}
          ????? , {
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label()}
          ????? , {
          ????? new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label(),
          ????? new Label(), new Label()}
          ? };
          ? private final Button todayButton = new Button();
          ? private final Button cancelButton = new Button();
          ? public DatePicker() {
          ??? super();
          ??? selectedDate = getToday();
          ??? init();
          ? }

          ? public DatePicker(final Date initialDate) {
          ??? super();
          ??? if (null == initialDate)
          ????? selectedDate = getToday();
          ??? else
          ????? (selectedDate = new GregorianCalendar()).setTime(initialDate);
          ??? originalDate = new GregorianCalendar(selectedDate.get(Calendar.YEAR),
          ???????????????????????????????????????? selectedDate.get(Calendar.MONTH),
          ???????????????????????????????????????? selectedDate.get(Calendar.DATE));
          ??? init();
          ? }

          ? public boolean isHideOnSelect() {
          ??? return hideOnSelect;
          ? }

          ? public void setHideOnSelect(final boolean hideOnSelect) {
          ??? if (this.hideOnSelect != hideOnSelect) {
          ????? this.hideOnSelect = hideOnSelect;
          ????? initButtons(false);
          ??? }
          ? }

          ? public Date getDate() {
          ??? if (null != selectedDate)
          ????? return selectedDate.getTime();
          ??? return null;
          ? }

          ? private void init() {
          ??? setLayout(new AbsoluteLayout());
          ??? /*
          ??? this.setMinimumSize(new Dimension(161, 226));
          ??? this.setMaximumSize(getMinimumSize());
          ??? this.setPreferredSize(getMinimumSize());
          ??? this.setBorder(new BorderUIResource.EtchedBorderUIResource());
          ??? */
          ?? this.setSize(new Dimension(161, 226));
          ??? backButton.setFont(smallFont);
          ??? backButton.setLabel("<");
          ? //? backButton.setSize(insets);
          ?//?? backButton.setDefaultCapable(false);
          ??? backButton.addActionListener(new ActionListener() {
          ????? public void actionPerformed(final ActionEvent evt) {
          ??????? onBackClicked(evt);
          ????? }
          ??? });
          ??? add(backButton, new AbsoluteConstraints(10, 10, 20, 20));
          ??? monthAndYear.setFont(largeFont);
          ??? monthAndYear.setAlignment((int)TextField.CENTER_ALIGNMENT);
          ??? monthAndYear.setText(formatDateText(selectedDate.getTime()));
          ??? add(monthAndYear, new AbsoluteConstraints(30, 10, 100, 20));
          ??? forwardButton.setFont(smallFont);
          ??? forwardButton.setLabel(">");
          ?//?? forwardButton.setMargin(insets);
          //??? forwardButton.setDefaultCapable(false);
          ??? forwardButton.addActionListener(new ActionListener() {
          ????? public void actionPerformed(final ActionEvent evt) {
          ??????? onForwardClicked(evt);
          ????? }
          ??? });
          ??? add(forwardButton, new AbsoluteConstraints(130, 10, 20, 20));
          ??? int x = startX;
          ??? for (int ii = 0; ii < dayHeadings.length; ii++) {
          ??? //? dayHeadings[ii].setOpaque(true);
          ????? dayHeadings[ii].setBackground(Color.LIGHT_GRAY);
          ????? dayHeadings[ii].setForeground(Color.WHITE);
          ????? dayHeadings[ii].setAlignment((int)TextField.CENTER_ALIGNMENT);
          ??? //? dayHeadings[ii].setHorizontalAlignment(Label.CENTER);
          ????? add(dayHeadings[ii], new AbsoluteConstraints(x, 40, 21, 21));
          ????? x += 20;
          ??? }
          ??? x = startX;
          ??? int y = startY;
          ??? for (int ii = 0; ii < daysInMonth.length; ii++) {
          ????? for (int jj = 0; jj < daysInMonth[ii].length; jj++) {
          ????? //? daysInMonth[ii][jj].setOpaque(true);
          ??????? daysInMonth[ii][jj].setBackground(white);
          ??????? daysInMonth[ii][jj].setFont(smallFont);
          ???? //?? daysInMonth[ii][jj].setHorizontalAlignment(Label.CENTER);
          ??????? daysInMonth[ii][jj].setText("");
          ??????? daysInMonth[ii][jj].addMouseListener(new MouseAdapter() {
          ????????? public void mouseClicked(final MouseEvent evt) {
          ??????????? onDayClicked(evt);
          ????????? }
          ??????? });
          ??????? add(daysInMonth[ii][jj], new AbsoluteConstraints(x, y, 21, 21));
          ??????? x += 20;
          ????? }
          ????? x = startX;
          ????? y += 20;
          ??? }
          ??? initButtons(true);
          ??? calculateCalendar();
          ? }

          ? private void initButtons(final boolean firstTime) {
          ??? if (firstTime) {
          ????? final Dimension buttonSize = new Dimension(68, 24);
          ????? todayButton.setLabel("今天");
          ????? todayButton.setSize(buttonSize);
          ????? /*
          ????? todayButton.setMargin(insets);
          ????? todayButton.setMaximumSize(buttonSize);
          ????? todayButton.setMinimumSize(buttonSize);
          ????? todayButton.setPreferredSize(buttonSize);
          ????? todayButton.setDefaultCapable(true);
          ????? todayButton.setSelected(true);
          ????? */
          ????? todayButton.addActionListener(new ActionListener() {
          ??????? public void actionPerformed(final ActionEvent evt) {
          ????????? onToday(evt);
          ??????? }
          ????? });
          ????? cancelButton.setLabel("取消");
          ????? cancelButton.setSize(buttonSize);
          ????? /*
          ????? cancelButton.setMargin(insets);
          ????? cancelButton.setMaximumSize(buttonSize);
          ????? cancelButton.setMinimumSize(buttonSize);
          ????? cancelButton.setPreferredSize(buttonSize);
          ????? */
          ????? cancelButton.addActionListener(new ActionListener() {
          ??????? public void actionPerformed(final ActionEvent evt) {
          ????????? onCancel(evt);
          ??????? }
          ????? });
          ??? }
          ??? else {
          ????? this.remove(todayButton);
          ????? this.remove(cancelButton);
          ??? }
          ??? if (hideOnSelect) {
          ????? add(todayButton, new AbsoluteConstraints(25, 190, 52, -1));
          ????? add(cancelButton, new AbsoluteConstraints(87, 190, 52, -1));
          ??? }
          ??? else {
          ????? add(todayButton, new AbsoluteConstraints(55, 190, 52, -1));
          ??? }
          ? }

          ? private void onToday(final java.awt.event.ActionEvent evt) {
          ??? selectedDate = getToday();
          ??? setVisible(!hideOnSelect);
          ??? if (isVisible()) {
          ????? monthAndYear.setText(formatDateText(selectedDate.getTime()));
          ????? calculateCalendar();
          ??? }
          ? }

          ? private void onCancel(final ActionEvent evt) {
          ??? selectedDate = originalDate;
          ??? setVisible(!hideOnSelect);
          ? }

          ? private void onForwardClicked(final java.awt.event.ActionEvent evt) {
          ??? final int day = selectedDate.get(Calendar.DATE);
          ??? selectedDate.set(Calendar.DATE, 1);
          ??? selectedDate.add(Calendar.MONTH, 1);
          ??? selectedDate.set(Calendar.DATE,
          ???????????????????? Math.min(day, calculateDaysInMonth(selectedDate)));
          ??? monthAndYear.setText(formatDateText(selectedDate.getTime()));
          ??? calculateCalendar();
          ? }

          ? private void onBackClicked(final java.awt.event.ActionEvent evt) {
          ??? final int day = selectedDate.get(Calendar.DATE);
          ??? selectedDate.set(Calendar.DATE, 1);
          ??? selectedDate.add(Calendar.MONTH, -1);
          ??? selectedDate.set(Calendar.DATE,
          ???????????????????? Math.min(day, calculateDaysInMonth(selectedDate)));
          ??? monthAndYear.setText(formatDateText(selectedDate.getTime()));
          ??? calculateCalendar();
          ? }

          ? private void onDayClicked(final java.awt.event.MouseEvent evt) {
          ??? final Label fld = (Label) evt.getSource();
          ??? if (!"".equals(fld.getText())) {
          ????? fld.setBackground(highlight);
          ????? selectedDay = fld;
          ????? selectedDate.set(Calendar.DATE, Integer.parseInt(fld.getText()));
          ????? setVisible(!hideOnSelect);
          ??? }
          ? }

          ? private static GregorianCalendar getToday() {
          ??? final GregorianCalendar gc = new GregorianCalendar();
          ??? gc.set(Calendar.HOUR_OF_DAY, 0);
          ??? gc.set(Calendar.MINUTE, 0);
          ??? gc.set(Calendar.SECOND, 0);
          ??? gc.set(Calendar.MILLISECOND, 0);
          ??? return gc;
          ? }

          ? private void calculateCalendar() {
          ??? if (null != selectedDay) {
          ????? selectedDay.setBackground(white);
          ????? selectedDay = null;
          ??? }
          ??? final GregorianCalendar c = new GregorianCalendar(selectedDate.get(Calendar.
          ??????? YEAR), selectedDate.get(Calendar.MONTH), 1);
          ??? final int maxDay = calculateDaysInMonth(c);
          ??? final int selectedDay = Math.min(maxDay, selectedDate.get(Calendar.DATE));
          ??? int dow = c.get(Calendar.DAY_OF_WEEK);
          ??? for (int dd = 0; dd < dow; dd++) {
          ????? daysInMonth[0][dd].setText("");
          ??? }
          ??? int week;
          ??? do {
          ????? week = c.get(Calendar.WEEK_OF_MONTH);
          ????? dow = c.get(Calendar.DAY_OF_WEEK);
          ????? final Label fld = this.daysInMonth[week - 1][dow - 1];
          ????? fld.setText(Integer.toString(c.get(Calendar.DATE)));
          ????? if (selectedDay == c.get(Calendar.DATE)) {
          ??????? fld.setBackground(highlight);
          ??????? this.selectedDay = fld;
          ????? }
          ????? if (c.get(Calendar.DATE) >= maxDay)
          ??????? break;
          ????? c.add(Calendar.DATE, 1);
          ??? }
          ??? while (c.get(Calendar.DATE) <= maxDay); week--;
          ??? for (int ww = week; ww < daysInMonth.length; ww++) {
          ????? for (int dd = dow; dd < daysInMonth[ww].length; dd++) {
          ??????? daysInMonth[ww][dd].setText("");
          ????? }
          ????? dow = 0;
          ??? }
          ??? c.set(Calendar.DATE, selectedDay);
          ??? selectedDate = c;
          ? }

          ? private static int calculateDaysInMonth(final Calendar c) {
          ??? int daysInMonth = 0;
          ??? switch (c.get(Calendar.MONTH)) {
          ????? case 0:
          ????? case 2:
          ????? case 4:
          ????? case 6:
          ????? case 7:
          ????? case 9:
          ????? case 11:
          ??????? daysInMonth = 31;
          ??????? break;
          ????? case 3:
          ????? case 5:
          ????? case 8:
          ????? case 10:
          ??????? daysInMonth = 30;
          ??????? break;
          ????? case 1:
          ??????? final int year = c.get(Calendar.YEAR);
          ??????? daysInMonth = (0 == year % 1000) ? 29 : (0 == year % 100) ? 28 :
          ??????????? (0 == year % 4) ? 29 : 28;
          ??????? break;
          ??? }
          ??? return daysInMonth;
          ? }

          ? private static String formatDateText(final Date dt) {
          ??? final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
          ??? final StringBuffer mm = new StringBuffer();
          ??? final StringBuffer yy = new StringBuffer();
          ??? final FieldPosition mmfp = new FieldPosition(DateFormat.MONTH_FIELD);
          ??? final FieldPosition yyfp = new FieldPosition(DateFormat.YEAR_FIELD);
          ??? df.format(dt, mm, mmfp);
          ??? df.format(dt, yy, yyfp);
          ??? return (mm.toString().substring(mmfp.getBeginIndex(), mmfp.getEndIndex()) +
          ??????????? "月 " +
          ??????????? yy.toString().substring(yyfp.getBeginIndex(), yyfp.getEndIndex()) +
          ??????????? "年");
          ? }
          }

          posted @ 2006-04-27 14:32 Kun Tao's Blog 閱讀(272) | 評論 (0)編輯 收藏

          從前,有一座圓音寺,每天都有許多人上香拜佛,香火很旺。在圓音寺廟前的橫梁上有個(gè)蜘蛛結(jié)了張網(wǎng),由于每天都受到香火和虔誠的祭拜的熏托,蛛蛛便有了佛性。經(jīng)過了一千多年的修煉,蛛蛛佛性增加了不少。   忽然有一天,佛主光臨了圓音寺,看見這里香火甚旺,十分高興。離開寺廟的時(shí)候,不輕易間地抬頭,看見了橫梁上的蛛蛛。佛主停下來,問這只蜘蛛:“你我相見總算是有緣,我來問你個(gè)問題,看你修煉了這一千多年來,有什么真知拙見。怎么樣?”蜘蛛遇見佛主很是高興,連忙答應(yīng)了。佛主問到:“世間什么才是最珍貴的?”蜘蛛想了想,回答到:“世間最珍貴的是‘得不到’和‘已失去’。”佛主點(diǎn)了點(diǎn)頭,離開了。   就這樣又過了一千年的光景,蜘蛛依舊在圓音寺的橫梁上修煉,它的佛性大增。一日,佛主又來到寺前,對蜘蛛說道:“你可還好,一千年前的那個(gè)問題,你可有什么更深的認(rèn)識嗎?”蜘蛛說:“我覺得世間最珍貴的是‘得不到’和‘已失去’。”佛主說:“你再好好想想,我會再來找你的。”   又過了一千年,有一天,刮起了大風(fēng),風(fēng)將一滴甘露吹到了蜘蛛網(wǎng)上。蜘蛛望著甘露,見它晶瑩透亮,很漂亮,頓生喜愛之意。蜘蛛每天看著甘露很開心,它覺得這是三千年來最開心的幾天。突然, 又刮起了一陣大風(fēng),將甘露吹走了。蜘蛛一下子覺得失去了什么,感到很寂寞和難過。這時(shí)佛主又來了,問蜘蛛:“蜘蛛這一千年,你可好好想過這個(gè)問題:世間什么才是最珍貴的?”蜘蛛想到了甘露,對佛主說:“世間最珍貴的是‘得不到 ’和‘已失去’。”佛主說:“好,既然你有這樣的認(rèn)識,我讓你到人間走一朝吧。”   就這樣,蜘蛛投胎到了一個(gè)官宦家庭,成了一個(gè)富家小姐,父母為她取了個(gè)名字叫蛛兒。一晃,蛛兒到了十六歲了,已經(jīng)成了個(gè)婀娜多姿的少女,長的十分漂亮,楚楚動人。   這一日,新科狀元郎甘鹿中士,皇帝決定在后花園為他舉行慶功宴席。來了許多妙齡少女,包括蛛兒,還有皇帝的小公主長風(fēng)公主。狀元郎在席間表演詩詞歌賦,大獻(xiàn)才藝,在場的少女無一不被他折倒。但蛛兒一點(diǎn)也不緊張和吃醋,因?yàn)樗溃@是佛主賜予她的姻緣。   過了些日子,說來很巧,蛛兒陪同母親上香拜佛的時(shí)候,正好甘鹿也陪同母親而來。上完香拜過佛,二位長者在一邊說上了話。蛛兒和甘鹿便來到走廊上聊天,蛛兒很開心,終于可以和喜歡的人在一起了,但是甘鹿并沒有表現(xiàn)出對她的喜愛。蛛兒對甘鹿說:“你難道不曾記得十六年前,圓音寺的蜘蛛網(wǎng)上的事情了嗎?”甘鹿很詫異,說:“蛛兒姑娘,你漂亮,也很討人喜歡,但你想象力未免豐富了一點(diǎn)吧。”說罷,和母親離開了。   蛛兒回到家,心想,佛主既然安排了這場姻緣,為何不讓他記得那件事,甘鹿為何對我沒有一點(diǎn)的感覺?   幾天后,皇帝下召,命新科狀元甘鹿和長風(fēng)公主完婚;蛛兒和太子芝草完婚。這一消息對蛛兒如同晴空霹靂,她怎么也想不同,佛主竟然這樣對她。幾日來,她不吃不喝,窮究急思,靈魂就將出殼,生命危在旦夕。太子芝草知道了,急忙趕來,撲倒在床邊,對奄奄一息的蛛兒說道:“那日,在后花園眾姑娘中,我對你一見鐘情,我苦求父皇,他才答應(yīng)。如果你死了,那么我也就不活了。”說著就拿起了寶劍準(zhǔn)備自刎。   就在這時(shí),佛主來了,他對快要出殼的蛛兒靈魂說:“蜘蛛,你可曾想過,甘露(甘鹿)是由誰帶到你這里來的呢?是風(fēng)(長風(fēng)公主)帶來的,最后也是風(fēng)將它帶走的。甘鹿是屬于長風(fēng)公主的,他對你不過是生命中的一段插曲。而太子芝草是當(dāng)年圓音寺門前的一棵小草,他看了你三千年,愛慕了你三千年,但你卻從沒有低下頭看過它。蜘蛛,我再來問你,世間什么才是最珍貴的?”蜘蛛聽了這些真相之后,好象一下子大徹大悟了,她對佛主說:“世間最珍貴的不是‘得不到’和‘已失去’,而是現(xiàn)在能把握的幸福。”剛說完,佛主就離開了,蛛兒的靈魂也回位了,睜開眼睛,看到正要自刎的太子芝草,她馬上打落寶劍,和太子深深的抱著……   故事結(jié)束了,你能領(lǐng)會蛛兒最后一刻的所說的話嗎?“世間最珍貴的不是‘得不到’ 和‘已失去’,而是現(xiàn)在能把握的幸福。”
          posted @ 2005-10-25 20:14 Kun Tao's Blog 閱讀(234) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 肇州县| 开化县| 绵竹市| 黄陵县| 台东县| 武城县| 乃东县| 晋州市| 营口市| 长宁区| 博罗县| 赤水市| 长沙县| 济源市| 巴林右旗| 卓尼县| 西安市| 南康市| 中西区| 德庆县| 招远市| 卓尼县| 仙桃市| 永年县| 泸州市| 休宁县| 巫山县| 双城市| 花垣县| 曲水县| 望城县| 射洪县| 阳曲县| 泉州市| 新郑市| 汉源县| 大英县| 灵川县| 丽江市| 资阳市| 云阳县|