用this.className或this.classid来实现下拉菜单或下拉列表的显示是如此的简单

今天来教大家一个很简单的实现下拉菜单或下拉列表的效果,这种效果一般的情况下大家会去写一大堆的JS或者jQuery代码,很是不方便,今天的方法很简单,只用一个this.className=''这样一个代码就可以实现了。

先看一下效果:

HTML代码:

<div id="category-2015" onmouseover="this.className='on'" onmouseout="this.className=''" class="">
            <div class="ld">
                <h2>全部商品分类<b></b></h2>
            </div>
            <div id="allsort">                
            </div>
        </div>

CSS样式:

#category-2015{width:210px;height:40px;position:absolute;left:0;top:0;z-index:20;margin: 40px;}
#category-2015 .ld{position:relative;width:210px;height:40px;line-height:40px;background:#CD292B;cursor:pointer;}
#category-2015 .ld h2{font-size:14px;color:#fff;padding-left:20px;color:#fff}
/*重点看下面二个样式*/ #category-2015 #allsort{display:none;width:206px;height:200px;padding:3px 0;position:absolute;left:0;top:38px;border:2px solid #CD292B;background-color:#fafafa;} #category-2015.on #allsort{display:block;}
#category-2015 .ld b
{display:block;width:20px;height:20px;position:absolute;right:10px;top:10px;background:url(./img/arrow.gif) no-repeat 0 0;} #category-2015.on .ld b{background:url(./img/arrow.gif) no-repeat 0 -20px;}

有没有看明白一些:

建一个div,设置id为category-2015,然后在这个div里面建id为allsort的div,这个就是鼠标放上category-2015时下面出现的div,记住,他们是包含关系。

然后用onmouseover和onmouseout为id为category-2015的div添加和去除为on的class,然后在样式表里分别设置有on和没on时的样式的二个状态,然后就可以轻松的实现了。

#category-2015 #allsort{display:none;width:206px;height:200px;padding:3px 0;position:absolute;left:0;top:38px;border:2px solid #CD292B;background-color:#fafafa;}
#category-2015.on #allsort{display:block;} 

 

转载于:https://www.cnblogs.com/chunshu/p/5415531.html

好的,以下是具体的实验步骤: 1. 实现页面菜单 首先需要创建一个JMenuBar对象,然后在该对象上添加JMenu对象和JMenuItem对象。JMenu对象是菜单栏上的一级菜单,JMenuItem对象是菜单栏上的二级菜单,具体实现代码如下: ```java JMenuBar menuBar = new JMenuBar(); // 创建菜单栏对象 JMenu fileMenu = new JMenu("文件"); // 创建一级菜单对象 JMenuItem nameItem = new JMenuItem("按名字读取"); // 创建二级菜单对象 JMenuItem idItem = new JMenuItem("按学号读取"); JMenuItem classItem = new JMenuItem("按班级读取"); fileMenu.add(nameItem); // 将二级菜单添加到一级菜单上 fileMenu.add(idItem); fileMenu.add(classItem); menuBar.add(fileMenu); // 将一级菜单添加到菜单栏上 ``` 2. 实现搜索框 可以通过创建一个JTextField对象来实现搜索框,当用户在搜索框中输入关键字后,可以通过监听JTextField对象的内容变化事件来触发查询操作。具体实现代码如下: ```java JTextField searchField = new JTextField(20); // 创建搜索框对象 searchField.getDocument().addDocumentListener(new DocumentListener() { // 监听文本框内容变化事件 @Override public void insertUpdate(DocumentEvent e) { String keyword = searchField.getText(); // 获取搜索框中的关键字 // 根据关键字查询学生信息 List<Student> students = dao.queryByNameOrId(keyword); // 更新学生信息展示区域的内容 updateStudentInfo(students); } @Override public void removeUpdate(DocumentEvent e) { // 同上 } @Override public void changedUpdate(DocumentEvent e) { // 同上 } }); ``` 3. 实现班级下拉列表 可以通过创建一个JComboBox对象来实现班级下拉列表,当用户选择某个班级后,可以通过监听JComboBox对象的选择事件来触发查询操作。具体实现代码如下: ```java String[] classNames = dao.queryClassNames(); // 获取所有班级名称 JComboBox<String> classComboBox = new JComboBox<>(classNames); // 创建班级下拉列表 classComboBox.addItemListener(new ItemListener() { // 监听班级选择事件 @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { // 如果选择了某个班级 String className = (String) classComboBox.getSelectedItem(); // 根据班级名查询学生信息 List<Student> students = dao.queryByClassName(className); // 更新学生信息展示区域的内容 updateStudentInfo(students); } } }); ``` 4. 实现学生信息展示功能 可以通过创建一个JTable对象来实现学生信息的展示,需要首先创建一个TableModel对象来定义表格的结构,并且需要重写TableModel的方法来设置单元格的值。具体实现代码如下: ```java String[] columnNames = {"姓名", "学号", "班级", "成绩"}; // 表格列名 Object[][] rowData = {}; // 表格数据 TableModel tableModel = new DefaultTableModel(rowData, columnNames) { @Override public boolean isCellEditable(int row, int column) { return false; // 表格不可编辑 } @Override public Object getValueAt(int rowIndex, int columnIndex) { Student student = students.get(rowIndex); switch (columnIndex) { case 0: return student.getName(); case 1: return student.getId(); case 2: return student.getClassName(); case 3: return student.getScore(); default: return null; } } }; JTable table = new JTable(tableModel); // 创建表格对象 ``` 其中,students是一个List<Student>类型的变量,用于存储从数据库中查询到的学生信息。在查询操作完成后,需要将查询到的学生信息更新到students中,然后调用tableModel的fireTableDataChanged()方法来通知表格更新内容,具体实现代码如下: ```java private void updateStudentInfo(List<Student> students) { this.students = students; ((DefaultTableModel) tableModel).setDataVector(convertData(students), columnNames); } private Object[][] convertData(List<Student> students) { Object[][] data = new Object[students.size()][4]; for (int i = 0; i < students.size(); i++) { Student student = students.get(i); data[i][0] = student.getName(); data[i][1] = student.getId(); data[i][2] = student.getClassName(); data[i][3] = student.getScore(); } return data; } ``` 最后,需要将创建的各个组件添加到窗口中,并设置窗口的大小、位置和可见性等属性,具体实现代码如下: ```java JFrame frame = new JFrame("学生信息管理系统"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setJMenuBar(menuBar); frame.setLayout(new BorderLayout()); frame.add(searchField, BorderLayout.NORTH); frame.add(classComboBox, BorderLayout.WEST); frame.add(new JScrollPane(table), BorderLayout.CENTER); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值