Я работаю над примером с небольшим bean-компонентом и пытаюсь подключить bean-компонент с ограниченным свойством ко второму bean-компоненту. Я не знаю, что добавить в мастер соединений IDE NetBeans, и не могу найти эту сложность в руководствах по Java. Кто-нибудь знает, что делать? Я пытался добавить слушатель свойства, но не могу сделать это правильно. Ниже я покажу вам мои исходные и прослушивающие компоненты.
// 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 );
}
}
// СЛУШАТЕЛЬНЫЙ БИН
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!