NetBeans IDE连接向导和属性受限的java bean
我正在处理一个小bean示例,我正在尝试将一个具有受约束属性的bean连接到另一个bean。我不知道在NetBeans IDE连接向导中放什么,在java教程中找不到这种复杂性。有人知道该怎么做吗?我已尝试添加属性侦听器,但无法正确执行。下面我将向您展示我的源代码和侦听器bean //源BEANNetBeans IDE连接向导和属性受限的java bean,java,netbeans,javabeans,Java,Netbeans,Javabeans,我正在处理一个小bean示例,我正在尝试将一个具有受约束属性的bean连接到另一个bean。我不知道在NetBeans IDE连接向导中放什么,在java教程中找不到这种复杂性。有人知道该怎么做吗?我已尝试添加属性侦听器,但无法正确执行。下面我将向您展示我的源代码和侦听器bean //源BEAN import java.awt.Graphics; import java.io.Serializable; import javax.swing.JComponent; import java.a
import java.awt.Graphics;
import java.io.Serializable;
import javax.swing.JComponent;
import java.awt.Font;
import java.beans.*;
/**
* Bean with a constrained property "counter".
*/
public class ConstrainedBean
extends JComponent
implements Serializable
{
public int counter = 0;
private PropertyChangeSupport pcs =
new PropertyChangeSupport(this);
private VetoableChangeSupport vcs =
new VetoableChangeSupport(this);
private String title;
public int getInteger() {
return counter;
}
public void setInteger(int i) throws PropertyVetoException {
int old = this.counter;
this.vcs.fireVetoableChange("counter", old, i);
this.counter = i;
this.pcs.firePropertyChange("counter", old, i);
}
public void
addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void
removePropertyChangeListener(PropertyChangeListener listener) {
pcs.removePropertyChangeListener(listener);
}
public void
addVetoableChangeListener(VetoableChangeListener listener) {
vcs.addVetoableChangeListener(listener);
}
public void
removeVetoableChangeListener(VetoableChangeListener listener) {
vcs.removeVetoableChangeListener(listener);
}
protected void paintComponent( Graphics g )
{
this.title = Integer.toString(counter);
g.setColor( getForeground() );
int style = Font.PLAIN;
int fontSize = 50;
Font font = new Font ("Arial", style , fontSize);
g.setFont(font);
int height = g.getFontMetrics().getHeight();
System.out.println(height);
if ( this.title != null )
g.drawString(this.title, 0, height );
}
}
//侦听器BEAN
import java.awt.Graphics;
import java.io.Serializable;
import javax.swing.JComponent;
import java.awt.Font;
import java.beans.*;
import java.beans.PropertyChangeEvent;
import java.beans.VetoableChangeListener;
import java.beans.PropertyVetoException;
/**
* Bean with a simple property "counter".
*/
public class CounterBean
extends JComponent
implements Serializable
{
public int counter = 0;
public String title;
public int getInteger() {
return counter;
}
public void setInteger(int i) {
counter = i;
}
public class VetoChangeListener implements VetoableChangeListener {
public void vetoableChange(PropertyChangeEvent evt)
throws PropertyVetoException
{
Object oldc=evt.getOldValue();
Object newc=evt.getNewValue();
String s=evt.getPropertyName();
int sourcecounter = ((Integer)newc).intValue();
if ((sourcecounter <-5) | (sourcecounter >5))
{throw new PropertyVetoException("out of bounds",evt);}
else
{counter=sourcecounter;}
}
}
protected void paintComponent( Graphics g )
{
this.title = Integer.toString(counter);
g.setColor( getForeground() );
int style = Font.PLAIN;
int fontSize = 25;
Font font = new Font ("Arial", style , fontSize);
g.setFont(font);
int height = g.getFontMetrics().getHeight();
System.out.println(height);
if ( this.title != null )
g.drawString(this.title, 0, height );
}
}
导入java.awt.Graphics;
导入java.io.Serializable;
导入javax.swing.JComponent;
导入java.awt.Font;
导入java.beans。*;
导入java.beans.PropertyChangeEvent;
导入java.beans.VetoableChangeListener;
导入java.beans.PropertyVetoException;
/**
*具有简单属性“counter”的Bean。
*/
公共类反bean
扩展JComponent
实现序列化接口
{
公共整数计数器=0;
公共字符串标题;
public int getInteger(){
返回计数器;
}
公共void setInteger(int i){
计数器=i;
}
公共类VetoChangeListener实现VetoableChangeListener{
公共作废否决权变更(PropertyChangeEvent evt)
抛出PropertyVetoException
{
对象oldc=evt.getOldValue();
对象newc=evt.getNewValue();
字符串s=evt.getPropertyName();
int sourcecounter=((整数)newc).intValue();
如果((源计数器5))
{抛出新的PropertyVetoException(“越界”,evt);}
其他的
{counter=sourcecounter;}
}
}
受保护组件(图形g)
{
this.title=Integer.toString(计数器);
g、 setColor(get前台());
int style=Font.PLAIN;
int fontSize=25;
Font Font=新字体(“Arial”、样式、字体大小);
g、 setFont(字体);
int height=g.getFontMetrics().getHeight();
系统输出打印LN(高度);
如果(this.title!=null)
g、 抽绳(此标题,0,高度);
}
}
//
任何帮助都将被感激地接受。这是最复杂的属性类型。
ps NetBeans 5.5.1 答案很简单。侦听器bean中的顶级类必须实现 VetoableChangeListener。在这种情况下,NetBeans连接向导中的选项将有意义。请注意,侦听器bean当前不显示其计数器 变量是正确的,但我怀疑重新绘制应该可以做到这一点。在我的设置中,“+1”和“-1” 按钮连接到源bean