用java 生成一个树形菜单

用java 生成一个树形菜单,第1张

package com.csii

import java.awt.GridLayout

import javax.swing.JEditorPane

import javax.swing.JFrame

import javax.swing.JPanel

import javax.swing.JScrollPane

import javax.swing.JTree

import javax.swing.SwingUtilities

import javax.swing.UIManager

import javax.swing.event.TreeSelectionEvent

import javax.swing.event.TreeSelectionListener

import javax.swing.tree.DefaultMutableTreeNode

import javax.swing.tree.TreeSelectionModel

public class TreeDemo1 extends JFrame implements TreeSelectionListener {

private static final long serialVersionUID = 1L

private JPanel jContentPane = null

private JTree jTree = null

private JEditorPane jEditorPane = null

private JScrollPane jScrollPane = null

public JScrollPane getjScrollPane() {

if(jScrollPane==null){

jScrollPane = new JScrollPane()

jScrollPane.setViewportView(getJTree())

}

return jScrollPane

}

DefaultMutableTreeNode top = null // @jve:decl-index=0:

/**

 * This is the default constructor

 */

public TreeDemo1() {

super()

initialize()

}

/**

 * This method initializes this

 *

 * @return void

 */

private void initialize() {

this.setSize(438, 309)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

this.setContentPane(getJContentPane())

this.setTitle("JFrame")

}

/**

 * This method initializes jContentPane

 *

 * @return javax.swing.JPanel

 */

private JPanel getJContentPane() {

if (jContentPane == null) {

GridLayout gridLayout = new GridLayout()

gridLayout.setRows(1)

gridLayout.setColumns(2)

jContentPane = new JPanel()

jContentPane.setLayout(gridLayout)

jContentPane.add(getjScrollPane(), null)

jContentPane.add(getJEditorPane(), null)

}

return jContentPane

}

/**

 * This method initializes jTree

 *

 * @return javax.swing.JTree

 */

private JTree getJTree() {

if (jTree == null) {

top = new DefaultMutableTreeNode("黄山")

createNodes(top)

jTree = new JTree(top)

jTree.getSelectionModel().setSelectionMode(

TreeSelectionModel.SINGLE_TREE_SELECTION)

jTree.addTreeSelectionListener(this)

}

return jTree

}

private void createNodes(DefaultMutableTreeNode top) {

DefaultMutableTreeNode jingdian = null, jiaotong = null, zhusu = null, binguan = null, luying = null, jiesu = null

jingdian = new DefaultMutableTreeNode("景点")

jingdian.add(new DefaultMutableTreeNode("景点1"))

jingdian.add(new DefaultMutableTreeNode("景点2"))

jiaotong = new DefaultMutableTreeNode("交通")

jiaotong.add(new DefaultMutableTreeNode("路线1"))

jiaotong.add(new DefaultMutableTreeNode("路线2"))

jiaotong.add(new DefaultMutableTreeNode("路线3"))

zhusu = new DefaultMutableTreeNode("住宿")

zhusu.add(new DefaultMutableTreeNode("A住宿"))

zhusu.add(new DefaultMutableTreeNode("B住宿"))

zhusu.add(new DefaultMutableTreeNode("C住宿"))

binguan = new DefaultMutableTreeNode("宾馆")

binguan.add(new DefaultMutableTreeNode("X宾馆"))

binguan.add(new DefaultMutableTreeNode("Y宾馆"))

binguan.add(new DefaultMutableTreeNode("Z宾馆"))

binguan.add(new DefaultMutableTreeNode("XYZ宾馆"))

luying = new DefaultMutableTreeNode("露营")

luying.add(new DefaultMutableTreeNode("方式1"))

luying.add(new DefaultMutableTreeNode("方式2"))

jiesu = new DefaultMutableTreeNode("借宿")

jiesu.add(new DefaultMutableTreeNode("借宿1"))

jiesu.add(new DefaultMutableTreeNode("借宿2"))

jiesu.add(new DefaultMutableTreeNode("借宿3"))

top.add(jingdian)

top.add(jiaotong)

top.add(zhusu)

top.add(binguan)

top.add(luying)

top.add(jiesu)

}

/**

 * This method initializes jEditorPane

 *

 * @return javax.swing.JEditorPane

 */

private JEditorPane getJEditorPane() {

if (jEditorPane == null) {

jEditorPane = new JEditorPane()

}

return jEditorPane

}

@Override

public void valueChanged(TreeSelectionEvent e) {

DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree

.getLastSelectedPathComponent()

if (node == null)

// Nothing is selected.

return

if(node.isRoot()){

jEditorPane.setText("黄山的简介")

}

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())

}catch(Exception e){

e.printStackTrace()

}

new TreeDemo1().setVisible(true)

}

})

}

}

d.add(6,5,'Node 1.1.1.1','example01.html')

d.add(7,6,'Node 1.1.1.1.1','example01.html')

在图形界面中添加文本框架实现文本编辑,通过鼠标菜单栏添加事件监听实现保存。

在开发中我们经常会遇到左边是树形菜单,右边是一个显示列表,单击左边的树形菜单项时,右边会显示该菜单里面相对应的内容。在实战开发中经常有需要处理树形菜单、树形目录等等等业务需求。

而对于这种产品,在设计数据库时也建议使用idparentId的结构来做。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11386797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存