Netbeans查找未在应用程序启动时第一次执行

时间:2013-10-22 13:07:14

标签: netbeans rcp netbeans-platform

我有一个应用程序,其中查找提供程序位于资源管理器窗口中,它是一个jcomboBox。其选定值作为查找提供给其他顶级组件,并在编辑器中显示一个,在输出窗口区域中显示一个。 jcombobox的值在关闭应用程序时保存,并在应用程序启动时初始化为jcombobox。

当我清理并构建应用程序并启动应用程序时,jcombobox中显示的初始值未在查找中更新,并且列表窗口显示未初始化的值。一旦在jcombobox中选择了新值,它就会显示在其他窗口中。

如果我关闭应用程序而不更改jcombobox的值并启动应用程序,则不会更新查找。

如果我更改了组合框中的选择,请关闭应用程序并重新开始,查找会更新。

我希望在应用程序启动的任何时候,其他窗口都会获得查找的值。任何有关这方面的帮助将不胜感激。提前谢谢。

提供查找的资源管理器窗口的代码如下:

public final class ProviderTopComponent extends TopComponent {

  public ProviderTopComponent() {
    initComponents();
    setName(Bundle.CTL_ProviderTopComponent());
    setToolTipText(Bundle.HINT_ProviderTopComponent());
    associateLookup(new AbstractLookup(content));
  }

  private void initComponents() {

    jComboBox1 = new javax.swing.JComboBox();

    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
    jComboBox1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jComboBox1ActionPerformed(evt);
        }
    });


  private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    str = (String) jComboBox1.getSelectedItem();
    content.set(Collections.singleton(str), null);
}                                          

  private final InstanceContent content = new InstanceContent();
  String str;

  // Variables declaration - do not modify                     
  private javax.swing.JComboBox jComboBox1;


void writeProperties(java.util.Properties p) {
    // better to version settings since initial version as advocated at
    // http://wiki.apidesign.org/wiki/PropertyFiles
    p.setProperty("version", "1.0");
    p.setProperty("val", (String) jComboBox1.getSelectedItem());
}

void readProperties(java.util.Properties p) {
    String version = p.getProperty("version");
    // TODO read your settings according to their version
    String v = p.getProperty("val");
    if(v != null) {
        jComboBox1.setSelectedItem(v);
    }
}
}

查找侦听器窗口的代码如下:

public final class Listner_1TopComponent extends TopComponent implements LookupListener{

public Listner_1TopComponent() {
    initComponents();
    setName(Bundle.CTL_editorTopComponent());
    setToolTipText(Bundle.HINT_editorTopComponent());

}
...

private void initComponents() {
...
    jLabel1 = new javax.swing.JLabel();

...              

Collection<? extends String> str_collection;
private Lookup.Result<String> result = null;
String str;

// Variables declaration - do not modify                     
private javax.swing.JLabel jLabel1;
// End of variables declaration                   
@Override
public void componentOpened() {
    result = org.openide.util.Utilities.actionsGlobalContext().lookupResult(String.class);
    result.addLookupListener(this);
}

@Override
public void componentClosed() {
   result.removeLookupListener(this);
}


@Override
public void resultChanged(LookupEvent le) {
    str_collection = result.allInstances();
    if (str_collection.isEmpty()) {
    } else {
        str = str_collection.iterator().next();
    }
    jLabel1.setText(str);
    jLabel1.repaint();
}
}

0 个答案:

没有答案