swing 6

7.2.3.20 树(JTree)


    要显示一个层次关系分明的一组数据,用树状图表示能给用户一个直观而易用的感觉,JTree类如同Windows的资源管理器的左半部,通过点击可以"打开"、"关闭"文件夹,展开树状结构的图表数据。JTree也是依据M-V-C的思想来设计的,Jtree的主要功能是把数据按照树状进行显示,其数据来源于其它对象,其显示效果通常如下图所示

              

  下面是一棵包含六个分枝点的树的例子,来演示JTree的实现过程。

  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  import javax.swing.tree.*;
  class Branch{
     DefaultMutableTreeNode r;
//DefaultMutableTreeNode是树的数据结构中的通用节点,节点也可以有多个子节点。
    public Branch(String[] data){
       r=new DefaultMutableTreeNode(data[0]);
       for(int i=1;i<data.length;i++)
       r.add(new DefaultMutableTreeNode(data[i]));
        //给节点r添加多个子节点

    }
    public DefaultMutableTreeNode node(){//返回节点
       return r;
    }
  }
  public class Trees extends JPanel{
    String [][]data={
            {"Colors","Red","Blue","Green"},
            {"Flavors","Tart","Sweet","Bland"},
            {"Length","Short","Medium","Long"},
            {"Volume","High","Medium","Low"},
            {"Temperature","High","Medium","Low"},
            {"Intensity","High","Medium","Low"}
            };
    static int i=0; //I用于统计按钮点击的次数
    DefaultMutableTreeNode root,child,chosen;
    JTree tree;
    DefaultTreeModel model;
    public Trees(){
       setLayout(new BorderLayout());
       root=new DefaultMutableTreeNode("root");
       //根节点进行初始化

       tree=new JTree(root);
       //树进行初始化,其数据来源是root对象

       add(new JScrollPane(tree));
       //把滚动面板添加到Trees中

       model=(DefaultTreeModel)tree.getModel();
       //获得数据对象DefaultTreeModel
       JButton test=new JButton("Press me");
       //按钮test进行初始化
       test.addActionListener(new ActionListener(){
       //按钮test注册监听器

          public void actionPerformed(ActionEvent e){
          if (i<data.length){
          //按钮test点击的次数小于data的长度

              child=new Branch(data[i++]).node();
              //生成子节点

              chosen=(DefaultMutableTreeNode)
              //选择child的父节点

                  tree.getLastSelectedPathComponent();
                  if(chosen==null) chosen=root;
                  model.insertNodeInto(child,chosen,0);
                  //把child添加到chosen
          }
       }
    });
    test.setBackground(Color.blue);
    //按钮test设置背景色为蓝色

    test.setForeground(Color.white);
    //按钮test设置前景色为白色

    JPanel p=new JPanel();
    //面板p初始化

    p.add(test);
    //把按钮添加到面板p中

    add(p,BorderLayout.SOUTH);
    //把面板p添加到Trees中

  }
  public static void main(String args[]){
    JFrame jf=new JFrame("JTree demo");

    jf.getContentPane().add(new Trees(), BorderLayout.CENTER);
           //把Trees对象添加到JFrame对象的中央
    jf.setSize(200,500);
    jf.setVisible(true);
  }
 }

  运行结果是多种多样的,与用户点击按钮的次序有关,其中一种结果如下

内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值