精华内容
下载资源
问答
  • 然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表? 解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件...
  • 可以放到项目中用 mutiselect 下拉多选插件 可以放到项目中用 多选下拉列表 复选下拉列表 jquery多选列表 多选多级联动下拉列表,有demo
  • 自定义下拉列表

    2016-01-04 14:57:17
    自定义下拉列表,通过PopupWindow实现下拉列表下拉列表的宽度和下拉框的宽度一样,使下拉列表看起来更整体。
  • 自定义了QComboBox,将下拉框的原有左对齐的文字改为右对齐,包括下拉列表的文字,增大了下拉列表的高度,调整下拉列表的宽度的自适应。下拉框的下拉列表改成了仿手机的滑动操作方式,此为工程源码,Qt5亲测可用。
  • 下拉列表JS网页特效

    2019-11-11 21:50:23
    下拉列表JS网页特效 下拉列表JS网页特效 下拉列表JS网页特效 下拉列表JS网页特效 下拉列表JS网页特效 下拉列表JS网页特效
  • jQuery下拉列表插件

    2021-06-24 12:56:46
    jQuery下拉列表插件是一款可以通过任何元素来触发SweetDropdown插件,它既可以作为下拉列表使用,也可以作为提示框来使用。
  • 用oc语言实现下拉列表
  • Android自定义的下拉列表框控件

    万次阅读 2017-10-20 13:49:40
    Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手...

    一、概述

    Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求,

    比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的:

     

     

     

    这个时候只有自己动手写一个了。其实实现起来不算很难,

    本文实现的方案是采用TextView +ImageView+PopupWindow的组合方案。

    先来看看我们的自己写的控件效果图吧:(源码在文章下面最后给出哈!)

     

    二、自定义下拉列表框控件的实现

    1. 自定义控件用到的布局文件和资源:

    结果框的布局页面:dropdownlist_view.xml:


     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

     

    下拉弹窗列表布局页面:dropdownlist_popupwindow.xml:

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

     

    下拉弹窗列表布局页面:dropdownlist_popupwindow.xml:

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

     

    2. 自定义下拉列表框控件类的实现:

     

    我们采用了TextView+ImageView+PopupWindow的组合方案,所以我的自定义控件需要重写ViewGroup,由于我们已经知道了,布局方向为竖直方向,所以这里,

    我直接继承LinearLayout来写这个控件。具体实现代码如下:

    复制代码
    package com.czm.xcdropdownlistview;
    
    import java.util.ArrayList;
    
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.PopupWindow;
    import android.widget.TextView;
    
    @SuppressLint("NewApi")
    /**
     * 下拉列表框控件
     * @author caizhiming
     *
     */
    public class XCDropDownListView extends LinearLayout{
    
        private TextView editText;
        private ImageView imageView;
        private PopupWindow popupWindow = null;
        private ArrayList<String> dataList =  new ArrayList<String>();
        private View mView;
        public XCDropDownListView(Context context) {
            this(context,null);
            // TODO Auto-generated constructor stub
        }
        public XCDropDownListView(Context context, AttributeSet attrs) {
            this(context, attrs,0);
            // TODO Auto-generated constructor stub
        }
        public XCDropDownListView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // TODO Auto-generated constructor stub
            initView();
        }
    
        public void initView(){
            String infServie = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater layoutInflater;
            layoutInflater =  (LayoutInflater) getContext().getSystemService(infServie);
            View view  = layoutInflater.inflate(R.layout.dropdownlist_view, this,true);
            editText= (TextView)findViewById(R.id.text);
            imageView = (ImageView)findViewById(R.id.btn);
            this.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if(popupWindow == null ){
                        showPopWindow();
                    }else{
                        closePopWindow();
                    }
                }
            });
        }
        /**
         * 打开下拉列表弹窗
         */
        private void showPopWindow() {  
            // 加载popupWindow的布局文件  
            String infServie = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater layoutInflater;
            layoutInflater =  (LayoutInflater) getContext().getSystemService(infServie);
            View contentView  = layoutInflater.inflate(R.layout.dropdownlist_popupwindow, null,false);
            ListView listView = (ListView)contentView.findViewById(R.id.listView);
            
            listView.setAdapter(new XCDropDownListAdapter(getContext(), dataList));
            popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            popupWindow.setBackgroundDrawable(getResources().getDrawable(R.color.transparent));
            popupWindow.setOutsideTouchable(true);
            popupWindow.showAsDropDown(this);
        }
        /**
         * 关闭下拉列表弹窗
         */
        private void closePopWindow(){
            popupWindow.dismiss();
            popupWindow = null;
        }
        /**
         * 设置数据
         * @param list
         */
        public void setItemsData(ArrayList<String> list){
            dataList = list;
            editText.setText(list.get(0).toString());
        }
        /**
         * 数据适配器
         * @author caizhiming
         *
         */
        class XCDropDownListAdapter extends BaseAdapter{
    
            Context mContext;
            ArrayList<String> mData;
            LayoutInflater inflater;
            public XCDropDownListAdapter(Context ctx,ArrayList<String> data){
                mContext  = ctx;
                mData = data;
                inflater = LayoutInflater.from(mContext);
            }
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return mData.size();
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                // 自定义视图
                ListItemView listItemView = null;
                if (convertView == null) {
                    // 获取list_item布局文件的视图
                    convertView = inflater.inflate(R.layout.dropdown_list_item, null);
                    
                    listItemView = new ListItemView();
                    // 获取控件对象
                    listItemView.tv = (TextView) convertView
                            .findViewById(R.id.tv);
    
                    listItemView.layout = (LinearLayout) convertView.findViewById(R.id.layout_container);
                    // 设置控件集到convertView
                    convertView.setTag(listItemView);
                } else {
                    listItemView = (ListItemView) convertView.getTag();
                }
                
                // 设置数据
                listItemView.tv.setText(mData.get(position).toString());
                final String text = mData.get(position).toString();
                listItemView.layout.setOnClickListener(new OnClickListener() {
                    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        editText.setText(text);
                        closePopWindow();
                    }
                });
                return convertView;
            }
        
        }
        private static class ListItemView{
            TextView tv;
            LinearLayout layout;
        }
    
    }
    复制代码

     

    三、如何使用该自定义下拉列表框控件

    使用该控件和使用普通的自带的控件一样,首先需要在布局文件中引用该控件:

    复制代码
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.czm.xcdropdownlistview.MainActivity"
        tools:ignore="MergeRootFrame" >
        
        
        <com.czm.xcdropdownlistview.XCDropDownListView
            android:id="@+id/drop_down_list_view"
            android:layout_marginTop="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" />
        
        </RelativeLayout>
    复制代码

    其次,就是在代码中使用该控件:

    复制代码
    package com.czm.xcdropdownlistview;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.os.Bundle;
    /**
     * 使用下拉列表框控件 示例
     * @author caizhiming
     *
     */
    public class MainActivity extends Activity {
    
        XCDropDownListView dropDownListView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            dropDownListView = (XCDropDownListView)findViewById(R.id.drop_down_list_view);
            ArrayList<String> list = new ArrayList<String>();
            for(int i = 0;i< 6;i++){
                list.add("下拉列表项"+(i+1));
            }
            dropDownListView.setItemsData(list);
    
        }
    
    }
    复制代码

    对了,这个控件中,我没有实现点击item项回调接口,这个可能对有些写惯了回调的可能觉得少了写什么的感觉,有兴趣的你可以自己添加相关回调操作哈,这个大家应该都会把。

    四、源码下载

    最后给出源码的下载:
    http://download.csdn.net/download/u013068887/10031736

    本文参考:
    http://www.cnblogs.com/JczmDeveloper/p/4425010.html

     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

    下拉弹窗列表布局页面:dropdownlist_popupwindow.xml:

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

     

    展开全文
  • 下拉列表样式

    2011-10-09 20:56:46
    下拉列表样式,下拉列表样式下拉列表样式下拉列表样式下拉列表样式下拉列表样式下拉列表样式
  • 搜索下拉列表

    2016-10-10 17:54:20
    下拉列表做一个搜索框
  • 下拉列表

    2014-10-14 22:59:46
    下拉列表
  • jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择
  • 然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表? 解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件...

    在开发过程中,为了效果好看,往往需要自己开发一个下拉列表,而不是使用 HTML 自身的 select 下拉列表。然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表?

    解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件的默认行为和冒泡。当响应这个点击事件的时候,说明是在下拉列表范围外的点击(因为下拉列表内阻止了事件的冒泡),就可以关闭已经打开的下拉列表。

    如果是纯 JS 代码,有人可能会使用 document.onclick 来添加根节点事件。不过,我现在使用 Vue.js,会选择使用 Vue.js 的方式处理这个问题。

    Vue.js 使用组件化的方式组织代码,会有一个根组件,可以在这个根组件上加上 @click 事件,来响应区域外的点击事件。在一个完整的应用中,可能有多种场景需要这种区域外点击关闭的功能。除了最普通的表单里的下拉列表外,还可能是网站右上角的消息提示框,或者菜单。比较合适的做法是把点击事件的具体处理逻辑放到各个组件中去。

    那么如何让各个子组件响应根组件上的点击事件呢?可以使用Vuex来做到这一点。在这里 Vuex 起到了组件之间互相传递信息的作用。

    读者可以在这个网址下载我编写的 Demo 项目:http://download.csdn.net/detail/zhangchao19890805/9855750
    推荐读者使用 yarn install 安装所需的依赖。

    下面说一下关键代码:

    程序入口 main.js:

    import Vue from 'vue'
    import App from './App.vue'
    import VueRouter from 'vue-router'
    import routes from './router'
    import VueSuperagent from 'vue-superagent'
    import Vuex from 'vuex'
    import 'babel-polyfill';
    import store from './vuex/store';
    
    Vue.use(VueRouter);
    Vue.use(VueSuperagent);
    Vue.use(Vuex);
    
    const router = new VueRouter({
      mode: 'history',
      routes
    })
    
    new Vue({
      el: '#app',
      router,
      store,
      render: h => h(App)
    })
    

    根节点 App.vue,添加了点击事件。

    <template>
      <div @click="clickRoot">
        <router-view></router-view>
      </div>
    </template>
    
    <script>
        export default {
            methods:{
                clickRoot(event){
                    this.$store.dispatch("clickRootNumAction", 1);
                }
            }
        }
    </script>
    

    Vuex 文件结构

    vuex
     │
     └─modules
          ├─clickRoot
          │    ├─actions.js
          │    ├─getters.js
          │    ├─index.js
          │    └─mutations.js
          │
          └─store.js

    actions.js

    export default {
        // action 允许异步加载,实际项目中
        // 这里可以发起个请求,再返回。
    
        clickRootNumAction(context, value) {
            context.commit('clickRootNum', value);
        }
    }
    

    getters.js

    export default {
        getClickRootNum(state) {
            return state.clickRootNum;
        }
    }
    

    index.js

    import actions from './actions'
    import getters from './getters'
    import mutations from './mutations'
    
    const state = {
        clickRootNum: 0
    }
    
    export default {
        state,
        actions,
        getters,
        mutations
    }
    

    mutations.js

    export default {
        clickRootNum(state, value) {
            let sum = state.clickRootNum + value
            state.clickRootNum = sum;
        }
    }
    

    store.js

    import Vue from 'vue';
    import Vuex from 'vuex';
    import clickRoot from './modules/clickRoot'
    Vue.use(Vuex);
    
    const debug = process.env.NODE_ENV !== 'production';
    
    export default new Vuex.Store({
        modules: {
            clickRoot
        },
        strict: debug
    })
    

    页面代码 test.vue

    <template>
        <div >
            <p>测试</p>
            <table>
                <tbody>
                    <tr>
                        <td style="vertical-align: top;">
                            <div class="dropDownList">
                                <button class="controll" @click.prevent.stop="listShow()" 
                                        @keydown.prevent.40="arrowDown1" @keydown.prevent.38="arrowUp1">
                                    {{selectItem}}
                                    <span  :class="['triangle',showList==false?'triangleShow':'triangleHidden']"></span>
                                </button>
                                <ul class="showList" v-if="showList" @click.prevent.stop>
                                    <input v-model="filterText" class="search"/>
                                    <li v-for="item in newObj" class="optionArea" @click="selectOption(item)">  {{item.type}} </li>
                                </ul>
                            </div>
                        </td>
                        <td style="vertical-align: top;">
                            <div class="dropDownList">
                                <button class="controll" @click.prevent.stop="listShow2()" 
                                        @keydown.prevent.40="arrowDown2" @keydown.prevent.38="arrowUp2">
                                    {{selectItem2}}
                                    <span  :class="['triangle',showList2==false?'triangleShow':'triangleHidden']"></span>
                                </button>
                                <ul class="showList" v-if="showList2" @click.prevent.stop>
                                    <input v-model="filterText2" class="search"/>
                                    <li v-for="item in newObj2" class="optionArea" @click="selectOption2(item)">  {{item.type}} </li>
                                </ul>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    
    </template>
    <script>
        export default {
            data(){
                return {
                    showList:false,
                    obj:[
                        {type:"男装"},
                        {type:"女装"},
                        {type:"童装"},
                        {type:"老年装"},
                    ],
                    filterText:"",
                    selectItem:"请选择",
    
                    showList2:false,
                    obj2:[
                        {type:"奔驰"},
                        {type:"桑塔纳"},
                        {type:"大众"},
                        {type:"比亚迪"},
                    ],
                    filterText2:"",
                    selectItem2:"请选择"
                };
    
            },
            methods:{
                listShow(){
                    this.showList=!this.showList;
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                selectOption(item){
                    this.selectItem=item.type;
                    this.showList=false;
                },
                // 第一个下拉列表 按键:向下的箭头
                arrowDown1(e){
                    if (!this.showList) {
                        this.showList = true;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                // 第一个下拉列表 按键:向上的箭头
                arrowUp1(e){
                    if (this.showList) {
                        this.showList = false;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                listShow2(){
                    this.showList2=!this.showList2;
                    if (this.showList) {
                        this.showList = false;
                    }
                },
                selectOption2(item){
                    this.selectItem2=item.type;
                    this.showList2=false;
                },
                // 第二个下拉列表 按键:向下的箭头
                arrowDown2(e){
                    if (!this.showList2) {
                        this.showList2 = true;
                    }
                    if (this.showList) {
                        this.showList = false;
                    }
                },
                // 第一个下拉列表 按键:向上的箭头
                arrowUp2(e){
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                    if (this.showList) {
                        this.showList = false;
                    }
                }
            },
            computed:{
                newObj:function(){
                    let self = this;
                    return self.obj.filter(function (item) {
                        return item.type.toLowerCase().indexOf(self.filterText.toLowerCase()) !== -1;
                    })
                },
                newObj2:function(){
                    let self = this;
                    return self.obj2.filter(function (item) {
                        return item.type.toLowerCase().indexOf(self.filterText2.toLowerCase()) !== -1;
                    })
                }
            },
            watch:{
                '$store.getters.getClickRootNum': function () {
                    if (this.showList){
                        this.showList = false;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                }
            }
        };
    </script>
    <style lang="scss" rel="stylesheet/scss" scoped>
        .dropDownList{
            margin-left:50px;
            width: 150px;
            .controll{ position: relative;
                width: 150px;
                border: 1px solid #E3E9EF;
                cursor: pointer;
                .triangle{ display: inline-block;
                    position: absolute;
                    top: 7px;
                    right: 10px;
                    cursor: pointer;
                }
                .triangleHidden{
                    border-left: 5px solid transparent;
                    border-right: 5px solid transparent;
                    border-bottom: 8px solid #676F7F;
                }
                .triangleShow{
                    border-left: 5px solid transparent;
                    border-right: 5px solid transparent;
                    border-top: 8px solid #676F7F;
                }
            }
            .showList{
                margin: 0;
                padding: 0;
                border: 1px solid #E3E9EF;
                // padding-top: 5px;
                padding-bottom: 5px;
                margin-top: 2px;
                width: 145px;
                .search{ width: 141px;
                    border: 1px solid #E3E9EF;
                }
                .optionArea{
                    list-style: none;
                    cursor: pointer;
                    font-size: 14px;
                    margin-left: 5px;
                    &:hover{ background-color: #B2CFEB;
                        color: #fff;
                    }
                }
            }
        }
    </style>
    展开全文
  • 下拉列表demo

    2016-05-26 09:46:39
    直接导入android studio,组合控件下拉列表菜单demo,spinner和PopupWindow简单实现下拉菜单。
  • 各种效果的分段选择和下拉列表,二级下拉列表,可自定义列表样式。
  • 易语言动画框下拉列表源码,动画框下拉列表,帐号列表_加入项目
  • 下拉列表显示图片

    2014-06-26 17:35:11
    select 下拉列表 下拉列表显示图片
  • jquery下拉列表

    2012-11-23 11:31:35
    基于jquery+css的下拉列表实现,绝对是最简单易懂的下拉列表实现方式
  • 现在市面上的很多的应用,都带有下拉列表的功能,将所有选项都放在下拉列表中,当用户点击选择的时候,弹出所有的选项,用户选择一项后,下拉列表自动隐藏,很多下拉列表都是用ListView + PopupWindow来实现的,由于...
  • 从数据库读取下拉列表数据,按顺序显示到下拉列表框里
  • ios下拉列表

    2013-05-04 10:28:26
    ios 下拉列表 点击按钮就会出现一个下拉的列表 显示内容
  • 下拉列表在网站前端开发中经常遇到,如何操作html下拉列表标签,本篇文章给大家详解javascript如何操作html下拉列表标签,需要的朋友可以来参考下
  • java下拉列表

    千次阅读 2020-03-16 20:45:08
    联动下拉列表是指一组“相互关联”的下拉列表,相邻的两个下拉列表是父子关系,改变父下拉列表的值,子下拉列表也随之改变。在页面中将显示一个三级联动下拉列表,在省份的下拉列表框中选择地区,在省级下拉列表中将...

    java“图形界面—下拉列表”

    @java图形界面
    1.用到了两个组件"JComboBo"+“JLabel”
    2.本次还用到了“一维函数”+“二维函数”

    代码:ItemEvent

    联动下拉列表是指一组“相互关联”的下拉列表,相邻的两个下拉列表是父子关系,改变父下拉列表的值,子下拉列表也随之改变。在页面中将显示一个三级联动下拉列表,在省份的下拉列表框中选择地区,在省级下拉列表中将显示出该市的地级市信息,

    public class 下拉列表 {
    	//定义:界面组件
            JFrame f;
    		JComboBox jBox1;
    		JComboBox jBox2;
    		JLabel       l1 ;
    		JLabel       l2 ;
    	//函数
    	 private String[] pri;
    	 private String[][]city; 
    	 
    	 
    	public static void main(String[] args) {
    		//地区下拉列表
    		
    		String[] pri  = {"== 请选择 ==","重庆","福建","山东","上海","浙江"};
    		
    		String[] [] city = {
    				{"== 请选择 =="},
    				{"石家庄","山西","海南","湖北","丰都"},
    				{"江苏","陕西","广东","湖南","万州"},
                    {"四川","沈阳","广西","武汉","江西"}
                        		}; 
    
    		        new 下拉列表(pri, city).showMe();
    		        
    	}
    	
         public 下拉列表( String[] pri,String[][]city){
    	//界面设置
        	 this.pri = pri;
        	 this.city= city;
        	 
    	     f = new JFrame("地区");
    		 jBox1 = new JComboBox(pri);
    		 jBox2 = new JComboBox(city[0]);
    		 l1 = new JLabel("省份");
    		 l2 = new JLabel("地区");
            
    		f.setLayout(new FlowLayout());
    		f.add(l1);
    		f.add(jBox1);
    		f.add(l2);
    		f.add(jBox2);
    	    text();
    		
    	}
         
         public void text() {
       //下拉设置
    		jBox1.addItemListener(new ItemListener() {
    			
    			@Override
    			public void itemStateChanged(ItemEvent arg0) {
    				// TODO Auto-generated method stub
    				int index = jBox1.getSelectedIndex();
    				jBox2.removeAllItems();
    				for (int i = 0; i < city[index].length; i++) {
    					jBox2.addItem(city[index][i]);
    				}
    			}
    		});
    		
    		
    	}
                 public void showMe() {
    	
                	 f.setSize(400, 300);
                     f.setVisible(true);
                     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 }              
    

    地区是随便写的,可以自己去改。

    效果图:

    效果图

    展开全文
  • // 传入下拉列表数组值,构造信息模板 public static Workbook generateExcel(String[]typeArrays) {  Workbook wb = new XSSFWorkbook();  // 创建模板工作表  Sheet sheet = wb.createSheet("test");...

    // 传入下拉列表数组值,构造信息模板
    public static Workbook generateExcel(String[]typeArrays) {
        Workbook wb = new XSSFWorkbook();
        // 创建模板工作表
        Sheet sheet = wb.createSheet("test");
        // 创建下拉列表值存储工作表并设置值
        genearteOtherSheet(wb, typeArrays);

        // 创建模板列信息并绑定下拉列表值
        Row row = sheet.createRow(0);
        // 设置列信息样式 -- 当前样式对于列信息未居中
        setStyle(wb, sheet, 0);
        setStyle(wb, sheet, 1);
        // 绑定列信息
        Cell nameCell = row.createCell((int)0);
        nameCell.setCellValue("名称");
        Cell typeCell = row.createCell((int)1);
        typeCell.setCellValue("类型");

        // 设置下拉列表值绑定对哪一页起作用
        sheet.addValidationData(SetDataValidation(wb, "typelist!$A$1:$A$" + typeArrays.length, 1, 0, typeArrays.length, 0));

        // 隐藏作为下拉列表值的Sheet
        wb.setSheetHidden(wb.getSheetIndex("typelist"), 1);

        return wb;
    }

    // 创建下拉列表值存储工作表并设置值
    public static void genearteOtherSheet(Workbook wb, String[]typeArrays) {
        // 创建下拉列表值存储工作表
        Sheet sheet = wb.createSheet("typelist");
        // 循环往该sheet中设置添加下拉列表的值
        for (int i = 0; i < typeArrays.length; i++) {
            Row row = sheet.createRow(i);
            Cell cell = row.createCell((int)0);
            cell.setCellValue(typeArrays[i]);
        }
    }

    // 设置列信息样式
    public static void setStyle(Workbook wb, Sheet sheet, int colNum) {
        CellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
        DataFormat format = wb.createDataFormat();
        cellStyle.setDataFormat(format.getFormat("@"));

        sheet.setDefaultColumnStyle(colNum, cellStyle);
    }

    // 设置并引用其他Sheet作为绑定下拉列表数据
    public static DataValidation SetDataValidation(Workbook wb, String strFormula, int firstRow, int firstCol, int endRow, int endCol) {
        // 表示A列1-59行作为下拉列表来源数据
        // String formula = "typelist!$A$1:$A$59" ;
        // 原顺序为 起始行 起始列 终止行 终止列
        CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
        DataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet)wb.getSheet("typelist"));
        DataValidationConstraint formulaListConstraint = dvHelper.createFormulaListConstraint(strFormula);
        DataValidation dataValidation = dvHelper.createValidation(formulaListConstraint, regions);

        return dataValidation;
    }

    public static void main(String[]args)throws Exception {
        List < String > typelist = new ArrayList < String > ();
        for (int i = 0; i < 200; i++) {
            typelist.add("T" + (0 + i));
        }
        String[]typeArrays = typelist.toArray(new String[typelist.size()]);
        Workbook wb = generateExcel(typeArrays);
        File tempFile = new File("C:\\Users\\gqd\\Desktop\\test.xlsx");
        OutputStream os = new FileOutputStream(tempFile);

        wb.write(os);
        os.close();
    }
     

    展开全文
  • C#树形下拉列表控件

    2020-02-02 20:40:33
    C#树形下拉列表控件 非常好用的 完全源代码 C#树形下拉列表控件 非常好用的 完全源代码 C#树形下拉列表控件 非常好用的 完全源代码 C#树形下拉列表控件 非常好用的 完全源代码
  • jQuery三级下拉列表导航菜单 jQuery三级下拉列表导航菜单 jQuery三级下拉列表导航菜单 jQuery三级下拉列表导航菜单 jQuery三级下拉列表导航菜单
  • js多选下拉列表

    热门讨论 2012-03-05 20:27:28
    多选下拉列表 复选下拉列表 jquery多选列表 多选多级联动下拉列表,有demo
  • input 级联下拉列表

    2010-12-13 17:57:17
    input 级联下拉列表 input 级联下拉列表 input 级联下拉列表 input 级联下拉列表 input 级联下拉列表
  • bootstrap下拉列表美化

    2016-02-24 20:51:52
    bootstrap下拉列表美化

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 239,178
精华内容 95,671
关键字:

下拉列表