java - 将 Netbeans 项目逻辑 View 替换为大纲 View

标签 java swing netbeans-platform netbeans-plugins outline-view

上下文:我们正在设计一个基于 Netbeans Platform RCP 的 Lua IDE。我们实现了一个构建系统,允许用户轻松启用/禁用文件并添加别名以在构建时重命名文件。我们认为从 UI 的角度来看,有必要在项目逻辑选项卡中的自定​​义节点旁边设置复选框,以简化启用和禁用文件的过程

问题:我们想要用 Outline View 替换默认的 BeanTreeView,因为默认 View 不支持查找中的 CheckableNode。我们不确定执行此操作的最佳方法,但我们设计的解决方案似乎是错误的方法。该组件无法正确调整大小,并且节点在启动时不会像在 native BeanTreeView 中那样自动展开。

实现细节:我们创建了一个代理 DataObject 节点委托(delegate)的 FilterNode。我们还将自己的属性集添加到查找中,并添加了一个实现 CheckableNode 的类(因此大纲 View 左侧的复选框)。

现在的样子,这正是我们想要的样子:

custom logical tab view

这是我们用来安装它的代码:

final String PROJECT_LOGICAL_TAB_ID = "projectTabLogical_tc";
    WindowManager.getDefault().invokeWhenUIReady(new Runnable() {
        @Override
        public void run() {
            TopComponent findTopComponent = WindowManager.getDefault().findTopComponent(PROJECT_LOGICAL_TAB_ID);
            if (findTopComponent != null) {
                Component[] components = findTopComponent.getComponents();
                for (Component component : components) {
                    component.setVisible(false);          
                }
                OutlineView myView2 = new OutlineView("Filename");
                Outline outline2 = myView2.getOutline();
                outline2.setRootVisible(false);
                outline2.setTableHeader(null);         
                findTopComponent.add(myView2, BorderLayout.CENTER);
                findTopComponent.revalidate();
                findTopComponent.validate();
                findTopComponent.repaint();
            }


        }
    });

提前致谢。

最佳答案

它对我有用:(win7、Java 7 x64、NB dev (20121214))

public void jbuttonActionPerformance(ActionEvent ev){

    TopComponent findTopComponent = WindowManager.getDefault().findTopComponent("OutlineTopComponent"); // TODO add your handling code here:
   findTopComponent.setVisible(false);
   findTopComponent.removeAll();
   findTopComponent.setLayout(new BorderLayout());

    OutlineView myView2 = new OutlineView("Filename");
    Outline outline2 = myView2.getOutline();
    findTopComponent.add(myView2, BorderLayout.CENTER);

    findTopComponent.setVisible(true);
    findTopComponent.open();findTopComponent.requestActive();
}

吉尔卡

关于java - 将 Netbeans 项目逻辑 View 替换为大纲 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909680/

相关文章:

java - 重新绘制具有不同渐变的 Swing 按钮

netbeans-platform - 如何将附加(数据)文件与 Netbeans 模块捆绑在一起?

java - 如何为 Netbeans 编写提示?

java - 在基本的java游戏编程、类和接口(interface)构造方面需要帮助

java - 在运行 swing gui 的同时运行线程

java - 我可以使用 Java Swing 在网站上创建一个图层吗?

java - 工具提示导致 swing/netbeans-rcp 中出现死锁

java - iText 和 iTextSharp 端口有何不同?

java - java中获取登录用户的 session 数据

java - Swing:从其他应用程序中窃取焦点(在 OS X 中的可用性)