问题描述:实现将一个窗口分为两个部分,左边是功能树,就像CSDN的功能树那样,右边是根据所选节点调用相应的4GL程序并显示其界面在树的右边.我写的功能树如下,可是不知道怎么具体实现前面所述的功能,请各位大侠帮忙,以前从来没做GUI方面的东西,先谢过各位了.我的功能树的代码:import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.*;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FunctionTree extends JApplet{
Hashtable ht1 = new Hashtable();
Vector menu11 = new Vector(); // @jve:decl-index=0:
Vector menu12 = new Vector(); // @jve:decl-index=0:
Vector menu13 = new Vector();
Vector menu14 = new Vector();
Vector menu15 = new Vector();
Vector menu16 = new Vector();
Object[] objs = new Object[]{"array item1","array item2","array item3"};
private JFrame DisplayFrame = null; // @jve:decl-index=0:visual-constraint="160,114"
private JPanel DisplayPane = null;
public void init(){
Container contentPane = getContentPane();
menu11.addElement("Item Mster");
menu11.addElement("Zone Master");
menu11.addElement("Location Master");
menu11.addElement("Receipt Master");
menu11.addElement("Employee Master");
menu11.addElement("Work Order Master");
menu11.addElement("Department Master");
menu12.addElement("Item");
menu12.addElement("Inventory");
menu12.addElement("Location");
ht1.put("Master Files", menu11);
ht1.put("Inquery Menu", menu12);
ht1.put("Quality Control", menu13);
ht1.put("Inventory Detail", menu14);
ht1.put("Cycle Counts", menu15);
ht1.put("Reports", menu16);
JTree hashTree = new JTree(ht1);
JScrollPane hashPane =new JScrollPane(hashTree);
hashPane.setPreferredSize(new Dimension(500,500));
hashPane.setBorder(BorderFactory.createTitledBorder("Menu"));
hashTree.expandPath(new TreePath(hashTree.getModel().getRoot()));
contentPane.setLayout(new FlowLayout());
contentPane.add(hashPane);
}
}
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.*;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FunctionTree extends JApplet{
Hashtable ht1 = new Hashtable();
Vector menu11 = new Vector(); // @jve:decl-index=0:
Vector menu12 = new Vector(); // @jve:decl-index=0:
Vector menu13 = new Vector();
Vector menu14 = new Vector();
Vector menu15 = new Vector();
Vector menu16 = new Vector();
Object[] objs = new Object[]{"array item1","array item2","array item3"};
private JFrame DisplayFrame = null; // @jve:decl-index=0:visual-constraint="160,114"
private JPanel DisplayPane = null;
public void init(){
Container contentPane = getContentPane();
menu11.addElement("Item Mster");
menu11.addElement("Zone Master");
menu11.addElement("Location Master");
menu11.addElement("Receipt Master");
menu11.addElement("Employee Master");
menu11.addElement("Work Order Master");
menu11.addElement("Department Master");
menu12.addElement("Item");
menu12.addElement("Inventory");
menu12.addElement("Location");
ht1.put("Master Files", menu11);
ht1.put("Inquery Menu", menu12);
ht1.put("Quality Control", menu13);
ht1.put("Inventory Detail", menu14);
ht1.put("Cycle Counts", menu15);
ht1.put("Reports", menu16);
JTree hashTree = new JTree(ht1);
JScrollPane hashPane =new JScrollPane(hashTree);
hashPane.setPreferredSize(new Dimension(500,500));
hashPane.setBorder(BorderFactory.createTitledBorder("Menu"));
hashTree.expandPath(new TreePath(hashTree.getModel().getRoot()));
contentPane.setLayout(new FlowLayout());
contentPane.add(hashPane);
}
}
解决方案 »
- 初学者,请教一下JAVA怎么做类似windows的C/S程序?
- 病毒专杀-用java作开发
- 请问:在tomcat下使用log4j,如何去掉tomcat自动插入的日志信息?
- java如何识别一个字符串里面有没有中文字符?
- 为什么java后会这样,带参数怎么弄阿
- 通过URL传递中文的方法?
- 如何判断某一未知字符串是否包含已知字符串?
- 哪有将exe程序加载为系统服务的工具呀?
- 菜鸟求救!(non-static variable this cannot be referenced from a static context)
- 新手的学习java,问一下前辈们接下来的问题
- eclipse中怎样生成jar文件
- 请高手指点一下,谢谢
根据树节点显示相应的页面就行了
如果树结点是动态的最好不要用观察者,因为你不一定知道要观察谁.以观察者为例,大体说一下:
将一个JSplitPane设为JFrame的容器,JSplitPane的左边为树,右边为视图组件,左右两边的组件都要放在JScrollPane中
让右边框里的显示视图的方法监听树的选择结点事件.Java的UI非常重杂,一般来说都遵循MVC的架框,有可能一个看似简单的组件也要写一大堆代码.
朋友你要心理准备.
------------------------
当然---------不可以了. 那是公司项目.
super(newOrientation);
setContinuousLayout(true);
setOneTouchExpandable(true);
setDividerLocation(defaultWidth);
if(newOrientation == JSplitPane.HORIZONTAL_SPLIT){
this.setLeftComponent(firstComp);
this.setRightComponent(secondComp);
}else if (newOrientation == JSplitPane.VERTICAL_SPLIT){
this.setTopComponent(firstComp);
this.setBottomComponent(secondComp);
}
}
}
...
MyTree tree = new MyTree();
MyTable table = new MyTable();
ICPSplitPane splitPane = new (JSplitPane.HORIZONTAL_SPLIT, tree, table);
...//事件
tree.addItemListener(new ItemListener(){ ....
Object obj = tree.getSelected()
table.refresh(obj);
});