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

📄 propertynamedialog.java

📁 拥有图形界面的
💻 JAVA
字号:
package org.joone.edit;import java.beans.*;import java.awt.*;import java.awt.event.*;import java.util.Vector;public class PropertyNameDialog extends Dialog implements ActionListener {    /*     * Pop up a property dialog to look for a property of the given     * source object.  If "match" is non-null, then "match" must be     * equal to or a sunclass of the result property.     * If "readable" is true, then readable bound properties will be     * displayed, otherwise writable properties will be displayed.     */    PropertyNameDialog(Frame frame, Object source, String message, Class match, boolean readable) {	super(frame, "PropertyNameDialog", true);	new WindowCloser(this);	setLayout(null);	PropertyDescriptor allProperties[];	try {	    allProperties = Introspector.getBeanInfo(source.getClass()).getPropertyDescriptors();	    if (allProperties == null) {	        new ErrorDialog(frame, "PropertyNameDialog : couldn't find PropertyDescriptors");		return;	    }	} catch (Exception ex) {	    new ErrorDialog(frame, "PropertyNameDialog: Unexpected exception: \n" + ex);	    return;	}	// Select matching properties	properties = new Vector();	for (int i = 0; i < allProperties.length; i++) {	    PropertyDescriptor pd = allProperties[i];	    if (readable && !pd.isBound()) {		continue;	    }	    if (readable && pd.getReadMethod() == null) {		continue;	    }	    if (!readable && pd.getWriteMethod() == null) {		continue;	    }	    if (match == null || isSubclass(match, pd.getPropertyType())) {		properties.addElement(pd);	    }	}	int width = 300;	if (properties.isEmpty()) {	    new ErrorDialog(frame, "No suitable properties");	    return;	}	int height = 200;	Label l = new Label(message, Label.CENTER);	l.setBounds(2, 30, width-4, 25);	add(l);	list = new List(8, false);	for (int i = 0; i < properties.size(); i++) {	    PropertyDescriptor pd = 			(PropertyDescriptor)properties.elementAt(i);	    list.add(pd.getDisplayName());	}	list.select(0);	list.setBounds(10, 60, width-20, height-60);	add(list);	// Now do the "Cancel" and "OK" buttons.	height += 10;	cancelButton = new Button("Cancel");	cancelButton.addActionListener(this);	add(cancelButton);	cancelButton.setBounds((width/2)-70, height-5, 60, 30);	okButton = new Button("OK");	okButton.addActionListener(this);	add(okButton);	okButton.setBounds((width/2)+10, height-5, 60, 30);	height += 55;	list.setBounds(10, 60, width-20, height-130);	int x = frame.getLocation().x + 30;	int y = frame.getLocation().y + 50;	setBounds(x, y, width, height);	show();    }    /**     * Return true if class a is either equivalent to class b, or     * if class a is a subclass of class b.     * Note tht either or both "Class" objects may represent interfaces.     */    static  boolean isSubclass(Class a, Class b) {	// We rely on the fact that for any given java class or        // primtitive type there is a unqiue Class object, so	// we can use object equivalence in the comparisons.	if (a == b) {	    return true;	}	if (a == null || b == null) {	    return false;	}	for (Class x = a; x != null; x = x.getSuperclass()) {	    if (x == b) {			return true;	    }	    if (b.isInterface()) {		Class interfaces[] = x.getInterfaces();		for (int i = 0; i < interfaces.length; i++) {		    if (interfaces[i] == b) {			return true;		    }		}	    }	}	return false;    }    public PropertyDescriptor getResult() {	return result;    }    public void actionPerformed(ActionEvent evt) {	if (evt.getSource() == okButton) {	    if (list != null) {		int index = list.getSelectedIndex();		if (index >= 0) {		    result = (PropertyDescriptor)properties.elementAt(index);		}	    }	}	// For either canel or OK we're done.	dispose();    }    private Button okButton;    private Button cancelButton;    private List list;    private Vector properties;    private PropertyDescriptor result;        private static final long serialVersionUID = 7574936938123171751L;    }

⌨️ 快捷键说明

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