小さなbeanの例で作業しています。制約付きプロパティを持つBeanを2番目のBeanに接続しようとしています。私はNetBeans IDE接続ウィザードに何を入れるべきか分かりませんし、Javaチュートリアルではこの複雑さを見つけることができません。誰かが何をすべきか知っていますか?プロパティリスナーを追加しようとしましたが、それを正しく取得できません。私はあなたのソースとリスナーの豆を以下に示します。NetBeans IDE接続ウィザードと制限付きプロパティを持つJava Beam
// SOURCE BEAN
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);
}
}
// LISTENER 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);
}
}
//
すべてのヘルプは感謝して受け入れられます。これは、プロパティタイプの中で最も複雑です。 ps NetBeans 5.5.1!