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

📄 chartbeancustomizer.java

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

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

public class ChartBeanCustomizer extends JTabbedPane
   implements Customizer
{  public ChartBeanCustomizer()
   {  data = new JTextArea();
      JPanel dataPane = new JPanel();
      dataPane.setLayout(new BorderLayout());
      dataPane.add(new JScrollPane(data), "Center");
      JButton dataButton = new JButton("Set data");
      dataButton.addActionListener(
         new ActionListener()
         {  public void actionPerformed(ActionEvent event)
            {  setData(data.getText());
            }
         });
      JPanel p = new JPanel();
      p.add(dataButton);
      dataPane.add(p, "South");

      JPanel colorPane = new JPanel();
      colorPane.setLayout(new BorderLayout());

      normal = new JCheckBox("Normal", true);
      inverse = new JCheckBox("Inverse", false);
      p = new JPanel();
      p.add(normal);
      p.add(inverse);
      ButtonGroup g = new ButtonGroup();
      g.add(normal);
      g.add(inverse);
      normal.addActionListener(
         new ActionListener()
         {  public void actionPerformed(ActionEvent event)
            {  setInverse(false);
            }
         });

      inverse.addActionListener(
         new ActionListener()
         {  public void actionPerformed(ActionEvent event)
            {  setInverse(true);
            }
         });

      colorEditor
         = PropertyEditorManager.findEditor(Color.class);
      colorEditor.addPropertyChangeListener(
         new PropertyChangeListener()
         {  public void propertyChange(PropertyChangeEvent
               evt)
            {  setGraphColor((Color)colorEditor.getValue());
            }
         });

      colorPane.add(colorEditor.getCustomEditor(), "North");
      colorPane.add(p, "South");

      JPanel titlePane = new JPanel();
      titlePane.setLayout(new BorderLayout());

      g = new ButtonGroup();
      position = new JCheckBox[3];
      position[0] = new JCheckBox("Left", false);
      position[1] = new JCheckBox("Center", true);
      position[2] = new JCheckBox("Right", false);

      p = new JPanel();
      for (int i = 0; i < position.length; i++)
      {  final int value = i;
         p.add(position[i]);
         g.add(position[i]);
         position[i].addActionListener(
            new ActionListener()
            {  public void actionPerformed(ActionEvent event)
               {  setTitlePosition(value);
               }
            });
      }

      titleField = new JTextField();
      titleField.getDocument().addDocumentListener(
         new DocumentListener()
         {  public void changedUpdate(DocumentEvent evt)
            {  setTitle(titleField.getText());
            }
            public void insertUpdate(DocumentEvent evt)
            {  setTitle(titleField.getText());
            }
            public void removeUpdate(DocumentEvent evt)
            {  setTitle(titleField.getText());
            }
         });

      titlePane.add(titleField, "North");
      titlePane.add(p, "South");
      addTab("Color", colorPane);
      addTab("Title", titlePane);
      addTab("Data", dataPane);

      addChangeListener( // workaround for a JTabbedPane bug in JDK 1.2
         new ChangeListener()
         {  public void stateChanged(ChangeEvent event)
            {  validate();
            }
         });
   }

   public void setData(String s)
   {  StringTokenizer tokenizer = new StringTokenizer(s);

      int i = 0;
      double[] values = new double[tokenizer.countTokens()];
      while (tokenizer.hasMoreTokens())
      {  String token = tokenizer.nextToken();
         try
         {  values[i] = Double.parseDouble(token);
            i++;
         }
         catch (NumberFormatException exception)
         {
         }
      }
      setValues(values);
   }

   public void setTitle(String newValue)
   {  if (bean == null) return;
      String oldValue = bean.getTitle();
      bean.setTitle(newValue);
      firePropertyChange("title", oldValue, newValue);
   }

   public void setTitlePosition(int i)
   {  if (bean == null) return;
      Integer oldValue = new Integer(bean.getTitlePosition());
      Integer newValue = new Integer(i);
      bean.setTitlePosition(i);
      firePropertyChange("titlePosition", oldValue, newValue);
   }

   public void setInverse(boolean b)
   {  if (bean == null) return;
      Boolean oldValue = new Boolean(bean.isInverse());
      Boolean newValue = new Boolean(b);
      bean.setInverse(b);
      firePropertyChange("inverse", oldValue, newValue);
   }

   public void setValues(double[] newValue)
   {  if (bean == null) return;
      double[] oldValue = bean.getValues();
      bean.setValues(newValue);
      firePropertyChange("values", oldValue, newValue);
   }

   public void setGraphColor(Color newValue)
   {  if (bean == null) return;
      Color oldValue = bean.getGraphColor();
      bean.setGraphColor(newValue);
      firePropertyChange("graphColor", oldValue, newValue);
   }

   public void setObject(Object obj)
   {  bean = (ChartBean)obj;

      data.setText("");
      double[] values = bean.getValues();
      for (int i = 0; i < values.length; i++)
         data.append(values[i] + "\n");

      normal.setSelected(!bean.isInverse());
      inverse.setSelected(bean.isInverse());

      titleField.setText(bean.getTitle());

      for (int i = 0; i < position.length; i++)
         position[i].setSelected(i == bean.getTitlePosition());

      colorEditor.setValue(bean.getGraphColor());
   }

   public Dimension getPreferredSize()
   {  return new Dimension(200, 120);
   }

   private ChartBean bean;
   private PropertyEditor colorEditor;

   private JTextArea data;
   private JCheckBox normal;
   private JCheckBox inverse;
   private JCheckBox[] position;
   private JTextField titleField;
}

⌨️ 快捷键说明

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