JList 点击打开对应的视频

本文介绍了一个基于Java的视频播放器实现方法,通过点击JList中的选项来打开对应的视频文件,并详细展示了如何使用HSFUtility获取视频路径及使用Runtime执行视频播放。
 public void openVedio(int vedioID){
		Session session = null;
		String vedioDir = null;
		try {
			session = HSFUtility.getSession();
			session.beginTransaction();
			 
			Iterator it = (Iterator) session
				.createQuery("from WQ_Vedio_VO w where w.id = :myID ")
				.setParameter("myID",vedioID)
				.iterate();
				
			while (it.hasNext()) {
				WQ_Vedio_VO wvVedio  = (WQ_Vedio_VO) it.next();
			   vedioDir = wvVedio.getVedio_Dir();
			   System.out.println(vedioDir);
			}
			
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
			throw new java.lang.RuntimeException();
		} finally {
			HSFUtility.closeSession();
		}
		
		Runtime rt = Runtime.getRuntime();
		try {
			String cmd = "rundll32   url.dll,FileProtocolHandler " +vedioDir;
			rt.exec(cmd);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}

 

vedioList.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(final ListSelectionEvent e) {
				
				JOptionPane.showMessageDialog(vedioList, "您将打开视频"
						+ vedioList.getSelectedValue().toString());
				
				int id = 0;	
				for(int i=0;i<vedioList.getSelectedValue().toString().length();i++)
				{
					char c = vedioList.getSelectedValue().toString().charAt(i);
					if(c==95){		
						id = Integer.parseInt(vedioList.getSelectedValue().toString().substring(0,i));
						System.out.println(id);
						break;
					}
				}
	            openVedio(id);		
			}
		});

 

在JList中点击对应的选项,则打开对应的视频文件(使用系统默认程序打开)。截取字符串。

要让多个 JList 一一对应,可以使用一个 Map 来映射每个 JList对应的数据源。具体实现步骤如下: 1. 创建一个 Map,用于映射每个 JList对应的数据源。 2. 创建多个 JList,并将它们添加到容器中。 3. 在创建 JList 的同时,将它们与对应的数据源关联,并将 JList 添加到 Map 中保存。 4. 在需要修改数据源的时候,根据需要修改对应的数据源,并通知关联的 JList 更新视图。 下面是一个简单的示例代码: ``` Map<JList<String>, List<String>> listMap = new HashMap<>(); List<String> dataList1 = new ArrayList<>(); List<String> dataList2 = new ArrayList<>(); JList<String> list1 = new JList<>(new DefaultListModel<>()); JList<String> list2 = new JList<>(new DefaultListModel<>()); // 将数据源与 JList 关联,并添加到 Map 中保存 listMap.put(list1, dataList1); listMap.put(list2, dataList2); // 修改数据源 dataList1.add("item1"); dataList2.add("item2"); // 更新 JList 的视图 listMap.get(list1).forEach(item -> ((DefaultListModel<String>) list1.getModel()).addElement(item)); listMap.get(list2).forEach(item -> ((DefaultListModel<String>) list2.getModel()).addElement(item)); ``` 在上面的代码中,list1 和 list2 分别与 dataList1 和 dataList2 关联,并添加到 listMap 中保存。在修改数据源时,只需要修改对应的 List 即可,所有与之关联的 JList 都会自动更新。在更新 JList 的视图时,需要从 listMap 中获取对应的数据源,并将数据源中的元素添加到 JList 的 ListModel 中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值