Мастер соединений IDE NetBeans и Java-бины с ограниченными свойствами - PullRequest
0 голосов
/ 15 марта 2012

Я работаю над примером с небольшим 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!

1 Ответ

0 голосов
/ 17 марта 2012

Ответ на этот вопрос прост. Класс верхнего уровня в компоненте-слушателе должен реализовывать VetoableChangeListener. В этом случае параметры в мастере соединений NetBeans будут иметь смысл. Обратите внимание, что компонент-слушатель в данный момент не отображает свой счетчик Переменная правильно, но я подозреваю, что перекраска должна сделать свое дело. В моей настройке «+1» и «-1» кнопки подключены к исходному компоненту.

...