最近公司需要使用twaver做一款网管系统!小弟在网上找了n 久没有找到!只好求救! 大概的布局是左边是树形控件(tree)!右边是网络空间(network ),两个控件都有自己的面板(jpanel), 全部添加到分割面板中(JSplitPane),分割面板添加到窗体的面板中,我的需求就是在树形控件中添加菜单(已经做了),监听菜单选择事件,能够根据菜单选项的不同在右边的网络控件中生成新的面板,并显示出来.面板中需要写(JButton  JLabel  JTextfield 等控件,需要接受JTextfield  等控件中的文本内容)    急  ,希望高手帮我解决!!!   小弟在线等待!!  如果做过类似网络硬盘录像机的能提供资料搞好。   程序为桌面应用程序!

解决方案 »

  1.   

    唉 。   痛苦  等了一上午都没有答案啦      colin_pxx 你能否告诉我 zk的思路啦 
      

  2.   

    Network中可以加入twaver定义的网元,JButton之类的不能加入network。看看下面的代码能不能帮上你的忙。package test;import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;import javax.swing.JFrame;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.JScrollPane;
    import javax.swing.JSplitPane;
    import javax.swing.SwingUtilities;import twaver.Element;
    import twaver.Node;
    import twaver.PopupMenuGenerator;
    import twaver.TDataBox;
    import twaver.TView;
    import twaver.TWaverUtil;
    import twaver.network.TNetwork;
    import twaver.tree.TTree;public class TestNetworkDVR extends JFrame {
    private TDataBox databox = new TDataBox();
    private TNetwork network = new TNetwork(databox);
    private TTree tree = new TTree(databox); public TestNetworkDVR() {
    this.init();
    this.initDataBox();
    this.initListener();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(800, 600);
    TWaverUtil.centerWindow(this);
    } private void init() {
    JSplitPane mainPane = new JSplitPane();
    mainPane.setResizeWeight(0.25);
    mainPane.setLeftComponent(new JScrollPane(tree));
    mainPane.setRightComponent(network);
    this.getContentPane().add(mainPane);
    } private void initListener() {
    tree.setSelectableOnRightClick(true);
    tree.setPopupMenuGenerator(new TreePopupMenuGenerator(tree));
    } private void initDataBox() {
    Node from = new Node();
    from.setName("DVR1");
    from.setImage("/test/DVR.jpg");
    from.setLocation(50, 50);
    this.databox.addElement(from); Node to = new Node();
    to.setName("DVR2");
    to.setImage("/test/DVR.jpg");
    to.setLocation(50, 200);
    this.databox.addElement(to); this.tree.expandAll();
    } public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    new TestNetworkDVR().setVisible(true);
    }
    });
    }

    private static class TreePopupMenuGenerator implements PopupMenuGenerator {
    private TTree tree;

    public TreePopupMenuGenerator(TTree tree){
    this.tree = tree;
    }

    public JPopupMenu generate(TView tview, MouseEvent mouseEvent){
                if (tree.getDataBox().getSelectionModel().getAllSelectedElement().size() == 1) {
         JPopupMenu popMenu = new JPopupMenu();
                 Element element = tree.getDataBox().getLastSelectedElement();
              JMenuItem item = new JMenuItem(element.getName() + ": option1");
              item.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    }
    });
              popMenu.add(item);
                    return popMenu;
                }else{
                 return null;
                }
    }
    }
    }
      

  3.   

    network上的东东主要是呈现databox里的东西,只要databox里的东西变了就可以了嘛
      

  4.   

    这个用TWaver做貌似很简单,在TWaver论坛上有相关的例子:http://twaver.servasoft.com/forum/viewtopic.php?f=4&t=793