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

📄 propertysheetpanel.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *    This program is free software; you can redistribute it and/or modify *    it under the terms of the GNU General Public License as published by *    the Free Software Foundation; either version 2 of the License, or *    (at your option) any later version. * *    This program is distributed in the hope that it will be useful, *    but WITHOUT ANY WARRANTY; without even the implied warranty of *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *    GNU General Public License for more details. * *    You should have received a copy of the GNU General Public License *    along with this program; if not, write to the Free Software *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* *    PropertySheet.java *    Copyright (C) 1999 Len Trigg * */package weka.gui;import java.util.Hashtable;import java.util.Vector;import java.awt.Component;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Insets;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.Font;import java.awt.Dimension;import java.beans.Customizer;import java.beans.PropertyChangeEvent;import java.beans.PropertyDescriptor;import java.beans.MethodDescriptor;import java.beans.PropertyEditor;import java.beans.PropertyChangeSupport;import java.beans.PropertyChangeListener;import java.beans.IntrospectionException;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyEditorManager;import java.beans.PropertyVetoException;import java.beans.Beans;import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetException;import javax.swing.JPanel;import javax.swing.JLabel;import javax.swing.SwingConstants;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.BorderFactory;import javax.swing.JComponent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextArea;import javax.swing.JScrollPane;import java.awt.FlowLayout;/**  * Displays a property sheet where (supported) properties of the target * object may be edited. * * @author Len Trigg (trigg@cs.waikato.ac.nz) * @version $Revision: 1.1.1.1 $ */public class PropertySheetPanel extends JPanel  implements PropertyChangeListener {  /** The target object being edited */  private Object m_Target;  /** Holds properties of the target */  private PropertyDescriptor m_Properties[];  /** Holds the methods of the target */  private MethodDescriptor m_Methods[];  /** Holds property editors of the object */  private PropertyEditor m_Editors[];  /** Holds current object values for each property */  private Object m_Values[];  /** Stores GUI components containing each editing component */  private JComponent m_Views[];  /** The labels for each property */  private JLabel m_Labels[];  /** The tool tip text for each property */  private String m_TipTexts[];  /** StringBuffer containing help text for the object being edited */  private StringBuffer m_HelpText;  /** Help frame */  private JFrame m_HelpFrame;  /** Button to pop up the full help text in a separate frame */  private JButton m_HelpBut;  /** A count of the number of properties we have an editor for */  private int m_NumEditable = 0;  /**   * Creates the property sheet panel.   */  public PropertySheetPanel() {    //    setBorder(BorderFactory.createLineBorder(Color.red));    setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));  }  /** A support object for handling property change listeners */   private PropertyChangeSupport support = new PropertyChangeSupport(this);  /**   * Updates the property sheet panel with a changed property and also passed   * the event along.   *   * @param evt a value of type 'PropertyChangeEvent'   */  public void propertyChange(PropertyChangeEvent evt) {    wasModified(evt); // Let our panel update before guys downstream    support.firePropertyChange("", null, null);  }  /**   * Adds a PropertyChangeListener.   *   * @param l a value of type 'PropertyChangeListener'   */  public void addPropertyChangeListener(PropertyChangeListener l) {    support.addPropertyChangeListener(l);  }  /**   * Removes a PropertyChangeListener.   *   * @param l a value of type 'PropertyChangeListener'   */  public void removePropertyChangeListener(PropertyChangeListener l) {    support.removePropertyChangeListener(l);  }  /**   * Sets a new target object for customisation.   *   * @param targ a value of type 'Object'   */  public synchronized void setTarget(Object targ) {    // used to offset the components for the properties of targ    // if there happens to be globalInfo available in targ    int componentOffset = 0;    // Close any child windows at this point    removeAll();        GridBagLayout gbLayout = new GridBagLayout();    setLayout(gbLayout);    setVisible(false);    m_NumEditable = 0;    m_Target = targ;    try {      BeanInfo bi = Introspector.getBeanInfo(m_Target.getClass());      m_Properties = bi.getPropertyDescriptors();      m_Methods = bi.getMethodDescriptors();    } catch (IntrospectionException ex) {      System.err.println("PropertySheet: Couldn't introspect");      return;    }    int rowHeight = 12;    JTextArea jt = new JTextArea();    m_HelpText = null;    JScrollPane js = null;    // Look for a globalInfo method that returns a string    // describing the target    for (int i = 0;i < m_Methods.length; i++) {      String name = m_Methods[i].getDisplayName();      Method meth = m_Methods[i].getMethod();      if (name.equals("globalInfo")) {	if (meth.getReturnType().equals(String.class)) {	  try {	    Object args[] = { };	    String globalInfo = (String)(meth.invoke(m_Target, args));            String summary = globalInfo;            int ci = globalInfo.indexOf('.');            if (ci != -1) {              summary = globalInfo.substring(0, ci + 1);            }	    final String className = targ.getClass().getName();            m_HelpText = new StringBuffer("NAME\n");            m_HelpText.append(className).append("\n\n");            m_HelpText.append("SYNOPSIS\n").append(globalInfo).append("\n\n");            m_HelpBut = new JButton("More");	    m_HelpBut.setToolTipText("More information about "                                     + className);	    	    m_HelpBut.addActionListener(new ActionListener() {              public void actionPerformed(ActionEvent a) {                openHelpFrame();                m_HelpBut.setEnabled(false);              }            });	    jt.setFont(new Font("SansSerif", Font.PLAIN,12));	    jt.setEditable(false);	    jt.setLineWrap(true);	    jt.setWrapStyleWord(true);	    jt.setText(summary);            jt.setBackground(getBackground());	    rowHeight = 12;	    JPanel jp = new JPanel();	    jp.setBorder(BorderFactory.createCompoundBorder(			 BorderFactory.createTitledBorder("About"),			 BorderFactory.createEmptyBorder(5, 5, 5, 5)		 ));	    jp.setLayout(new BorderLayout());	    jp.add(jt, BorderLayout.CENTER);            JPanel p2 = new JPanel();            p2.setLayout(new BorderLayout());            p2.add(m_HelpBut, BorderLayout.NORTH);            jp.add(p2, BorderLayout.EAST);	    GridBagConstraints gbConstraints = new GridBagConstraints();	    //	    gbConstraints.anchor = GridBagConstraints.EAST;	    gbConstraints.fill = GridBagConstraints.BOTH;	    //	    gbConstraints.gridy = 0;     gbConstraints.gridx = 0;	    gbConstraints.gridwidth = 2;	    gbConstraints.insets = new Insets(0,5,0,5);	    gbLayout.setConstraints(jp, gbConstraints);	    add(jp);	    componentOffset = 1;	    break;	  } catch (Exception ex) {	    	  }	}      }    }    m_Editors = new PropertyEditor[m_Properties.length];    m_Values = new Object[m_Properties.length];    m_Views = new JComponent[m_Properties.length];    m_Labels = new JLabel[m_Properties.length];    m_TipTexts = new String[m_Properties.length];    boolean firstTip = true;    for (int i = 0; i < m_Properties.length; i++) {      // Don't display hidden or expert properties.      if (m_Properties[i].isHidden() || m_Properties[i].isExpert()) {	continue;      }      String name = m_Properties[i].getDisplayName();      Class type = m_Properties[i].getPropertyType();      Method getter = m_Properties[i].getReadMethod();      Method setter = m_Properties[i].getWriteMethod();      // Only display read/write properties.      if (getter == null || setter == null) {	continue;      }	      JComponent view = null;      try {	Object args[] = { };	Object value = getter.invoke(m_Target, args);	m_Values[i] = value;	PropertyEditor editor = null;

⌨️ 快捷键说明

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