豆无法实现List?

时间:2014-04-09 06:37:38

标签: java list user-interface netbeans javabeans

我有两个课程在各方面都相同但只有一个;第一个实现List<RuleSet>,而第二个实现List。他们拥有相同的成员和方法。当我尝试使用Netbeans&#39;来构建GUI时GUI构建器,我无法绑定到列表中的属性,而我可以绑定到另一个。

是否存在阻止我使用类实现PatternSet_I接口并将其用作Bean的东西?我这次可以解决这个问题,但这需要改变我的设计,我并不期望。

使事情更清晰的具体例子:

  • List实施PatternSet_J
  • List没有实施PatternSet_I
  • 无法绑定PatternSet_J
  • 实例中的属性
  • 可以绑定到List<RuleSet>
  • 实例中的属性

我将在下面添加代码:

PatternSet_I 实施package dvrminer.pattern; import dvrminer.rule.RuleSet; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class PatternSet_I implements List<RuleSet> { public static final String PROP_STRING = "string"; private Pattern pattern; private final List<RuleSet> ruleSets; private final transient PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public PatternSet_I() { ruleSets = new ArrayList<>(); } public Pattern getPattern() { return pattern; } public void setPattern(Pattern pattern) { this.pattern = pattern; } // @Override public int size() { return ruleSets.size(); } // @Override public boolean isEmpty() { return ruleSets.isEmpty(); } // @Override public boolean contains(Object o) { return ruleSets.contains(o); } // @Override public Iterator<RuleSet> iterator() { return ruleSets.iterator(); } // @Override public Object[] toArray() { return ruleSets.toArray(); } // @Override public <T> T[] toArray(T[] a) { return ruleSets.toArray(a); } // @Override public boolean add(RuleSet e) { return ruleSets.add(e); } // @Override public boolean remove(Object o) { return ruleSets.remove(o); } // @Override public boolean containsAll(Collection<?> c) { return ruleSets.containsAll(c); } // @Override public boolean addAll(Collection<? extends RuleSet> c) { return ruleSets.addAll(c); } // @Override public boolean addAll(int index, Collection<? extends RuleSet> c) { return ruleSets.addAll(index, c); } // @Override public boolean removeAll(Collection<?> c) { return ruleSets.removeAll(c); } // @Override public boolean retainAll(Collection<?> c) { return ruleSets.retainAll(c); } // @Override public void clear() { ruleSets.clear(); } // @Override public boolean equals(Object o) { return ruleSets.equals(o); } // @Override public int hashCode() { return ruleSets.hashCode(); } // @Override public RuleSet get(int index) { return ruleSets.get(index); } // @Override public RuleSet set(int index, RuleSet element) { return ruleSets.set(index, element); } // @Override public void add(int index, RuleSet element) { ruleSets.add(index, element); } // @Override public RuleSet remove(int index) { return ruleSets.remove(index); } // @Override public int indexOf(Object o) { return ruleSets.indexOf(o); } // @Override public int lastIndexOf(Object o) { return ruleSets.lastIndexOf(o); } // @Override public ListIterator<RuleSet> listIterator() { return ruleSets.listIterator(); } // @Override public ListIterator<RuleSet> listIterator(int index) { return ruleSets.listIterator(index); } // @Override public List<RuleSet> subList(int fromIndex, int toIndex) { return ruleSets.subList(fromIndex, toIndex); } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } }

List<RuleSet>

PatternSet_J 并没有实现package dvrminer.pattern; import dvrminer.rule.RuleSet; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class PatternSet_J { public static final String PROP_STRING = "string"; private Pattern pattern; private final List<RuleSet> ruleSets; private final transient PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public PatternSet_J() { ruleSets = new ArrayList<>(); } public Pattern getPattern() { return pattern; } public void setPattern(Pattern pattern) { this.pattern = pattern; } // @Override public int size() { return ruleSets.size(); } // @Override public boolean isEmpty() { return ruleSets.isEmpty(); } // @Override public boolean contains(Object o) { return ruleSets.contains(o); } // @Override public Iterator<RuleSet> iterator() { return ruleSets.iterator(); } // @Override public Object[] toArray() { return ruleSets.toArray(); } // @Override public <T> T[] toArray(T[] a) { return ruleSets.toArray(a); } // @Override public boolean add(RuleSet e) { return ruleSets.add(e); } // @Override public boolean remove(Object o) { return ruleSets.remove(o); } // @Override public boolean containsAll(Collection<?> c) { return ruleSets.containsAll(c); } // @Override public boolean addAll(Collection<? extends RuleSet> c) { return ruleSets.addAll(c); } // @Override public boolean addAll(int index, Collection<? extends RuleSet> c) { return ruleSets.addAll(index, c); } // @Override public boolean removeAll(Collection<?> c) { return ruleSets.removeAll(c); } // @Override public boolean retainAll(Collection<?> c) { return ruleSets.retainAll(c); } // @Override public void clear() { ruleSets.clear(); } // @Override public boolean equals(Object o) { return ruleSets.equals(o); } // @Override public int hashCode() { return ruleSets.hashCode(); } // @Override public RuleSet get(int index) { return ruleSets.get(index); } // @Override public RuleSet set(int index, RuleSet element) { return ruleSets.set(index, element); } // @Override public void add(int index, RuleSet element) { ruleSets.add(index, element); } // @Override public RuleSet remove(int index) { return ruleSets.remove(index); } // @Override public int indexOf(Object o) { return ruleSets.indexOf(o); } // @Override public int lastIndexOf(Object o) { return ruleSets.lastIndexOf(o); } // @Override public ListIterator<RuleSet> listIterator() { return ruleSets.listIterator(); } // @Override public ListIterator<RuleSet> listIterator(int index) { return ruleSets.listIterator(index); } // @Override public List<RuleSet> subList(int fromIndex, int toIndex) { return ruleSets.subList(fromIndex, toIndex); } /** * Add PropertyChangeListener. * * @param listener */ public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } /** * Remove PropertyChangeListener. * * @param listener */ public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } } ,尽管其他方面相同。

PatternSet_I

测试是在NetBeans 8中构建的表单。它有一个PatternSet_J和一个JTextArea以及一个名为textArea的{​​{1}}。我可以将textArea绑定到patternSet_J1.pattern.name但不绑定到patternSet_I1.pattern.name。唯一的区别是patternSet_I1.pattern.name实现List<RuleSet>

package dvrminer.pattern;

public class Test extends javax.swing.JPanel {


    public Test() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        patternSet_I1 = new dvrminer.pattern.PatternSet_I();
        patternSet_J1 = new dvrminer.pattern.PatternSet_J();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textArea = new javax.swing.JTextArea();

        textArea.setColumns(20);
        textArea.setRows(5);

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, patternSet_J1, org.jdesktop.beansbinding.ELProperty.create("${pattern.name}"), textArea, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        jScrollPane1.setViewportView(textArea);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(0, 0, 0))
        );

        bindingGroup.bind();
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private dvrminer.pattern.PatternSet_I patternSet_I1;
    private dvrminer.pattern.PatternSet_J patternSet_J1;
    private javax.swing.JTextArea textArea;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration                   
}

0 个答案:

没有答案